javascript无缝全屏轮播 全屏轮播代码在线生成

   2023-02-08 学习力0
核心提示:虽然平时能利用插件来实现,但是总是觉得,如果连个无缝轮播都写不出来,还玩个毛线;其实现在还真的是玩毛线,因为代码都是别人的,不过嘛,很快就变成是我的啦!代码还没封装成插件,其实我也还没弄清楚。下面有很多注释的,如果路过的你认为有错误,请指出

虽然平时能利用插件来实现,但是总是觉得,如果连个无缝轮播都写不出来,还玩个毛线;

其实现在还真的是玩毛线,因为代码都是别人的,不过嘛,很快就变成是我的啦!

代码还没封装成插件,其实我也还没弄清楚。

下面有很多注释的,如果路过的你认为有错误,请指出来啊,使劲拍。

 

html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
    <style>
    html,body{
    	margin:0px;
    	padding:0px;
    }
    .wrap{
        width: 1920px;
        height: 450px;
        overflow: hidden;
        margin: 0 auto;
        position: relative;
    }
    .list{
        position: absolute;    
    }
    img{
        width: 1920px;
        height: 450px;
        float: left;
    }
    a{
        text-decoration: none;
        position: absolute;
        top:100px;
        display: inline-block;
        width: 85px;
        line-height: 70px;
        background: rgba(3,3,3,.3);
        color: #fff;
        font-weight: 700;
        font-size: 50px;
        text-align: center;
        display: none;
    }
    .buttons{
        position: absolute;
        bottom: 20px;
        width: 100%;
        text-align: center;
    }
    span{
        width: 15px;
        height: 15px;
        border-radius: 50%;
        display: inline-block;
        cursor: pointer;
        border: 1px solid #fff;
    }
    span~span{
        margin-left: 20px;
    }
    .light{
        background-color: #fff;
    }
    </style>
</style>
</head>
<body>
    <div class="wrap" >
    	<div class="list" >
    		<img src="4.jpg">
    		<img src="1.jpg">
    		<img src="2.jpg">
    		<img src="3.jpg">
    		<img src="4.jpg">
    		<img src="1.jpg">
    	</div>
    	<a href="javascript:;" ><</a>
    	<a href="javascript:;" >></a>
    	<div class="buttons" >
    		<span class="light"></span>
    		<span ></span>
    		<span ></span>
    		<span ></span>
    	</div>
    </div>
</body>
</html>

js

<script type="text/javascript">
	window.onload = function(){
		var index = 1;
		var b = false;
        var timer;
		var wrap = document.getElementById('wrap');
		var list = document.getElementById('list');
		var prev = document.getElementById('prev');
		var next = document.getElementById('next');
		var buttons = document.getElementById('buttons');
		var dots = document.getElementsByTagName('span');
		var width = list.getElementsByTagName('img')[0].width;
		var length = dots.length;


		//初始化
		list.style.width = (length * width +2*width)+ 'px';
        
        //给span添加索引
        function addIndex(){
        	for(i = 0 ; i < dots.length ; i++){
        		dots[i].setAttribute('index',i+1) ;

        	}
        }
        addIndex();

		//左右按钮鼠标滑入显示
		wrap.onmouseover = function(){
			prev.style.display = 'block';
			next.style.display = 'block';
			stop();
		};

		//左右按钮鼠标滑出隐藏
		wrap.onmouseout = function(){
			prev.style.display = 'none';
			next.style.display = 'none';
			play();
		};

		//上一张
		function prevImg(){
			//防止连续滚动出现bug
			if(b){
                return;
			}

			//上一张函数
			slider(width);

			//索引,pagination用到
			index--;
			if(index < 1){
				index = length;
			}else if(index > length){
				index = 1;
			}

            //pagination函数
            pagination();
		}

		//下一张
		function nextImg(){
			//防止连续滚动出现bug
			if(b){
                return;
			}
			//上一张函数
			slider(-width);

			//索引,pagination用到
			index++;
			if(index < 1){
				index = length;
			}else if(index > length){
				index = 1;
			}

            //pagination函数
            pagination();
		}

		//上一张,下一张,触发其他函数变化
		function btn(e){
			if(b){
				return;
			}
            //兼容ff,ie
			e = window.e || e;
			var target = e.target ? e.target : e.srcElement;
            if(target.nodeName.toLowerCase() == 'span'){
            	var index1 = target.getAttribute('index');
            	//获取目标索引图片和当前图片的距离
                var offset = (index - index1) * width;
                slider(offset);
                index = index1;
                pagination();
            }
		}
        
        //切换核心函数
        function slider(offset){

            b = true ;
            //完成时间
            var time = 500;
            //间隔时间
            var inter = 5;
            //间隔时间内的移动距离,需要优先级限制,不然会出现问题(6/3/1)与(6/(3/1))结果不一
            
            var speed = Math.ceil(offset/(time/inter));

            //每次运动后的距离
            var left = parseInt(list.style.left) + offset;

            //运动函数
            var go = function(){

            	//当前left
            	var curLeft = parseInt(list.style.left);

            	//当滑动出处于中间,并且left没有完成动画时
            	if((speed > 0 && curLeft < left) || (speed < 0 && curLeft > left)){
                    
                    //运动(根据speed,的正负,决定左右方向)
            		list.style.left =curLeft + speed + 'px';
            		//延迟动画,是否执行取决于条件,也就是距离是否返程
            		
            			setTimeout(go,inter);
            		
            		
            	}
            	//当处于两端的时候
            	else{

            		//首先执行完成运动函数
            		list.style.left = left + 'px';
                    //根据left的值,决定是否重新设置left;
                    //当滑到最右
                    if(left < -(width * length)){
                    	list.style.left = -width + 'px';
                    }
                    //当滑到最左
                    else if(left > -width){
                    	list.style.left = -(width * length) + 'px';
                    };
                    b = false;
            	};
            };
            go();
        };
        
        //绑定dom
        function addEvent(element, event, listener){
        	//兼容ff,ie
        	if(element.addEventListener){
        		element.addEventListener(event,listener,false);
        	}else{
        		element.attachEvent('on'+event,listener);
        	};
        };
        
        //触发点击事件
        addEvent(prev,'click',prevImg);
        addEvent(next,'click',nextImg);
        addEvent(buttons,'click',btn)

        //分页函数
        function pagination(){

        	//遍历span,找出当前点亮的span
        	for( i = 0 ; i< dots.length ; i++){
        		if(dots[i].className == 'light'){
        			dots[i].className = '';
        			//跳出循环,执行循环后的函数
        			break;
        		};        		
        	};
        	//使span索引为当前index-1(span的索引从0开始)的点亮
        	dots[index -1].className = 'light';
        };

        //自动轮播
        function play(dire,interval){
            interval = interval || 3000;
            if(dire == 'left'){
            	timer = setInterval(prevImg,interval);
            }else{
            	timer = setInterval(nextImg,interval);
            }
        };
        play('right',3000);

        //终止轮播
        function stop(){
        	clearInterval(timer);
        };

        //全屏滚动,图片居中;
        function center(){
        	var viewWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
        	var imgWidth = width;
            var posCenter = (imgWidth - viewWidth) / 2;

            wrap.style.left = -posCenter + 'px';
        }
        window.onresize = center;
        

	};
</script>

  

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • JavaScript翻转字符串方法 js翻转一个字符串
    先把字符串转化成数组String.prototype.split(),再借助数组的reverse方法翻转数组顺序(Array.prototype.reverse()),然后把数组转化成字符串。使用的API方法:String.prototype.split(' ')使用指定的分隔符字符串将一个String对象分割成字符串数组Array.prot
    03-08
  • javascript常见面试题之一:将字符串'get-
    var str='get-element-by-id'; function strToupper(str) { //利用split将字符串分割成数组var arr= str.split('-');for (var i = 1; iarr.length; i++) {      //1.利用for循环获取数组的每个元素,2.用charAt(0)获取每个元素的第一个字符;3.用substr
    03-08
  • JavaScript清除空格、换行,把双引号转换成单引号
    JavaScript清除空格、换行,把双引号转换成单引
    1、页面   2、源码 1 !DOCTYPE2 html3 head4meta charset="utf-8"5 title清除字符串的空格和双引号/title6 style type="text/css"7 textarea{8 padding:10px;9 font-size:18px; 10 width:100%; 11 resize:none; 12 } 13 .main{ 14 padding:40px 10px; 15
    03-08
  • javaScript的Date函数 javascript date(
    1、获取当前时间  Date()获取到的时间是当前设备的显示的时间,开发中要考虑到用户的设备时间是否正确let nowTime = new Date(); // 获取当前时间  把data时间转换成常规格式scriptlet getTimeNow = () = {let nowTime = new Date(); // 获取当前时间——
    03-08
  • JavaScript中什么是闭包
    JavaScript中什么是闭包
    概念:当一个内部函数被调用,就会形成闭包,闭包就是能够读取其他函数内部变量的函数  就是一个函数去访问了另外一个函数的中的变量的函数例子:!DOCTYPE htmlhtmlheadmeta charset="UTF-8"title闭包/title/headbodyscript type="text/javascript"//允许函
    03-08
  • 关于Javascript中通过实例对象修改原型对象属性
    Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值。基本类型的数据值有5种:null、undefined、number、boolean和string。引用类型的数据值往大的说就1种,即Object类型。往细的说有:Object类型、Array类型、Date类型、Regexp类型、Functio
    03-08
  • javascript中defer的作用(转)
    script src=".js.js" defer/scriptdefer的作用就是作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题 加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活! defer是脚本程序强大功能中的一个“无名英
    03-08
  • JavaScript Array map() 方法
    JavaScript Array map() 方法
    一、定义map() 方法返回一个新数组,不会改变原始数组。同时新数组中的元素为原始数组元素调用函数处理后的值,并按照原始数组元素顺序依次处理元素。注意:map() 不会对空数组进行检测。二、语法array.map(function(currentValue,index,arr), thisValue)四、
    03-08
  • JavaScript中的arguments,callee,caller(转)
    在提到上述的概念之前,首先想说说javascript中函数的隐含参数:argumentsArguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从
    03-08
  • 前台javascript排序 js排序的几种方式
     script type="text/javascript"$(function () {$('.Sorthead-ShowUp').click(function () { var filed = $(this).attr("name"); $(".issorting").removeClass("issorting"); $(this).addClass("issorting"); D
    03-08
点击排行