js制作简单的轮播图
2017-06-21 09:30
211 查看
实现原理
首先定义一个div,设置width和height,然后在这个div里面再定义一个div2,该div的宽度为父div的宽度的n倍,其中n表示图片的张数,在这个div2里面放置需要进行轮播的所有图片,设置每张图片的宽度为一个最外层父类div的宽度,高度都是相同的然后使用js定义一个轮播的函数,每指定时间执行一次轮播函数,通过使用js提供的时间片来实现。轮播函数的思路为:在js外部定义一个全局变量remain,初始化值为0,即表示当前的图片的索引,然后在轮播函数里面对remain变量进行自增,再通过remain来设置要到达的图片的left偏移量,在这里需要对remain进行溢出判断
最后在最外层div元素里面再次定义一个与div2同级的div21,用于定义点击的圆形按钮。并设置点击事件,为了点击方便,在每个圆形按钮标签中定义一个data-index属性,指定所点击对应的图片的索引位置。在这里,圆心按钮标签我们使用span标签,然后通过设置它的border和border-radius来画出圆形按钮,在按钮事件函数中,同样是通过remain来设置要到达的图片的left偏移量,不过不是自增,而是修改成对应的data-index的值,同时需要注意的是:在按钮点击事件中,我们应该要清除自动轮播的时间片,以防止发生碰撞,影响视觉体验和效果
代码实现
页面布局<div class="carousel"> <div class="list"> <img src="images/carousel/car1.jpg" /> <img src="images/carousel/car2.jpg" /> <img src="images/carousel/car3.jpg" /> <img src="images/carousel/car4.jpg" /> </div> <div id="buttons"> <span data-index="0" class="on"></span> <span data-index="1"></span> <span data-index="2"></span> <span data-index="3"></span> </div> </div>
css样式设置
.carousel{ position: relative; top: 51.4px; width: 1348px; height: 500px; overflow: hidden; opacity: 0; transition: opacity .7s linear; } .carousel .list{ width: 5392px; height: 500px; position: absolute; left: 0px; transition: all .5s ease-out; } .carousel .list img{ float: left; width: 1348px; height: 500px; } #buttons { position: absolute; left: 660px; bottom: 20px; z-index: 2; height: 10px; width: 100px; } #buttons span { float: left; margin-right: 5px; width: 15px; height: 15px; border: 1px solid #fff; border-radius: 50%; background: #333; cursor: pointer; } #buttons .on { background: orangered; }
js核心代码
$(function(){ /** * 指定点击进入对应图片轮播页面 */ $.fn.clickpic = function(){ window.clearInterval(lunbo); var index = $(this).data("index"); curindex = index; var curleft = curindex * -1345; $(".list").css("left",curleft+"px"); lunbo = window.setInterval($.fn.carousel, 2500); $(".carousel div#buttons span.on").removeClass("on"); $(this).addClass("on"); }; $(document).on("click",".carousel div#buttons span",$.fn.clickpic); /** * 每三秒轮播一次 */ var curindex = 0; $.fn.carousel = function(){ curindex++; if(curindex == 4){ curindex = 0; } var curleft = curindex * -1345; $(".carousel div#buttons span.on").removeClass("on"); $(".carousel div#buttons span[data-index='"+curindex+"']").addClass("on"); $(".list").css("left",curleft+"px"); }; var lunbo = window.setInterval($.fn.carousel, 2500); });
相关文章推荐
- js网站轮播图怎么做简单?鸡哥教你简单制作效果炫酷
- 用原生js制作轮播图,以及关于position的简单归纳
- JS制作简单图片轮播--通过调整margin制作
- css+js制作简单的轮播图效果
- js/html/css做一个简单的图片自动(auto)轮播效果//带注释
- JS 简单的轮播特效示例
- [JavaScript] JS+CSS 制作超级简单的下拉菜单
- js图片轮播简单代码
- JS简单的轮播的图片滚动实例
- zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
- js最简单焦点图片轮播代码
- 第2款插件:tabBox.js可以非常简单方便地制作选项卡
- js简单制作图片焦点图
- js写的简单轮播图
- 使用HTML+CSS+JS制作简单的网页菜单界面
- JS制作的简单的三级及联
- 使用CSS制作简单的下拉菜单导航,用的是hover,js下次在分享
- 简单的JS图片轮播
- 简单选项卡 js和jquery制作方法分享
- 使用JS制作简易图片轮播效果