本篇文章给大家带来的内容是关于javascript实现自动左滑的轮播图(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
最近做项目总是只会调用别人做好的各种插件效果,想起很久没来自己写点小插件,久了会忘记的,就赶紧来补一下,前端程序员必备,实现一个js轮播图。
html代码:
<!doctype html><head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="./demo.css"></head> <body> <div class="slide"> <div class="img"> <ul id="slide_img"> <li><img src="./img/timgzqq905md.jpg"></li> <!--处理无缝衔接的图片--> <li><img src="./img/1486293868523.jpg"></li> <li><img src="./img/timg1.jpg"></li> <li><img src="./img/timg2.jpg"></li> <li><img src="./img/timgzqq905md.jpg"></li> </ul> </div> <ul id="num"> <li></li> <li></li> <li></li> <li></li> </ul> <div class="btn"> <span id="left"><</span> <span id="right">></span> </div> </div> <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <!--通过百度cdn地址引用jquery库--> <script type="text/javascript" src="./demo.js"></script></body>
此次的小demo样例用了4张图片,由于要实现无缝衔接,即最后一张顺畅地跳转到第一张,故在写html的时候,再重复了最后一张图片,然后通过直接定位,在轮播到最后一张图片的时候,将整个ul定位到第一张,由于第一张和最后一张是一样的,故效果看起来则顺畅自然的轮播。
css代码:
*{ margin: 0; padding: 0;}.slide{ position: relative; width: 1000px; height: 500px; margin: 40px auto; overflow: hidden;}.img ul{ position: absolute; left: -1000px; width: 5000px;}.img li{ list-style-type: none; float: left;}img{ width: 1000px; height: 500px;}#num li{ list-style-type: none; background-color: white; border: 1px solid red; border-radius: 100px; float: left; width: 10px; height: 10px; margin: 10px; cursor: pointer;}#num { position: absolute; top: 450px; left: 800px;}.btn{ font-size: 30px; color: gray;}#left{ position: absolute; top: 230px; left: 40px; cursor: pointer;}#right{ position: absolute; top: 230px; right: 40px; cursor: pointer;}
css中需要注意的是定位的时候,整个外部的p是相对定位,而里面的内容ul则相对于外部p进行绝对定位,通过left,top等来设置位置
js代码:
$(document).ready(function () { initradius();});var number = 1; //设置为全局变量//轮播图图片主体function startslide() { dealradius(number); if(number == 4) { number = 0; $('#slide_img').css({left: '0px'}); //处理无缝衔接图 dealradius(0); // 处理无缝衔接小圆点的跳转 } number++; var imageleft = -1000 * number; $('#slide_img').animate({left: imageleft});} var timer = setinterval(startslide,3000);//小圆点的轮播实现function dealradius(num) { var lis = $('#num li'); lis.eq(num).css('background-color', 'red'); for(var i = 0; i < num; i++) { lis.eq(i).css('background-color','white'); } for(var i = num + 1; i < 4; i++) { lis.eq(i).css('background-color','white'); }}//初始化小圆点function initradius() { var lis = $('#num li'); lis.eq(0).css('background-color', 'red');}//左右按钮的实现$('#left').mousedown (function() { clearinterval(timer); if(number == 0) { $('#slide_img').css({left: '-4000px'}); number = 4; } var imageleft = -1000 * (number-1); $('#slide_img').animate({left: imageleft}); number--; if(number == 0) { dealradius(3); } else { dealradius(number-1); }});$('#left').mouseup(function() { timer = setinterval(startslide,3000);});$('#right').mousedown (function() { clearinterval(timer); if(number == 4) { number = 0; $('#slide_img').css({left: '0px'}); //处理无缝衔接图 } var imageleft = -1000 * (number+1); $('#slide_img').animate({left: imageleft}); dealradius(number); number++;});$('#right').mouseup(function() { timer = setinterval(startslide,3000);});//小圆点的点击实现$('#num').on('click','li',function(){ clearinterval(timer); var _number = $(this).index() + 1; number = _number dealradius(number-1); var imageleft = -1000 * number; $('#slide_img').animate({left: imageleft}); timer = setinterval(startslide,3000);});
js代码中,首先要知道关于定时器的使用,其中,关于dom的使用,好久没用啊,感觉很不熟悉。。自己得多来加强。。
以上就是javascript实现自动左滑的轮播图(代码示例)的详细内容。
