java图片自动轮播原理_[Java教程]利用CSS3实现图片无间断轮播图的实现思路

本文介绍了如何利用CSS3的translate3d属性实现Java图片无间断轮播图,包括非无限循环和无限循环的实现思路,并提供JavaScript代码示例。文章最后鼓励读者尝试封装轮播插件并添加自动滚动功能。
摘要由CSDN通过智能技术生成

[Java教程]利用CSS3实现图片无间断轮播图的实现思路

0 2016-08-25 12:00:13

前言:图片轮播效果现在在各大网站都是非常普遍的,以前我们都是通过postion的left or right来控制dom的移动,这里我要说的是利用css3来制作轮播!相比以前通过postion来移动dom来说,css3的实现方式更为优雅!

我相信使用过css3的童鞋们应该都知道我们是用css哪个大哥属性了吧!嗯,对的,就是translate3d我在前几天还特地写过一篇文章来介绍它,不熟悉的童鞋可以点击关键字链接过去看看!知道的童鞋们,那我们继续往下看!

首先,我们先说下思路

非无限循环:直接设置每次移动的位移数值,然后根据时间段执行,比如索引从0-10,直接判断是否到0了,最后是否到10了,然后到了0或者10的时候直接将索引设置我相反的索引数就可以了。

无限循环:无限循环的就需要考虑前后的衔接了,比如第一张图跟最后一张图,在执行的最后一张图的时候应该会出现第一张图,那么相反之下出现第一张图然后往右翻的时候就应该出现最后一张图。那么这是这么做到的呢?其实很简单,那就是clone克隆最后一个dom到第一个dom的前面,然后clone第一个dom到最后一个dom的后面,可能我这么说,大家听起来有点晕。那么我们直接看看下面的代码就知道原理了!

HTML:1 2 3

4 5 6 7 8 9 10 11 轮播DEMO | 科博网-钟科的个人博客12 20 21 22
23
24 25 PKUgbaXooTzIz4TZQl7heAGF.jpg26 27 VQeqlUbGMLcGqpy-QnDjzyZn.jpg28 E32rcqdZn0uMt9JbXr0w0K95.jpg29 uWHhrhupbMphjzsYtS7IRSD_.jpg30 k2wZVNRo0YNU7i-wuC_-84Du.jpg31 PKUgbaXooTzIz4TZQl7heAGF.jpg32 33 34 VQeqlUbGMLcGqpy-QnDjzyZn.jpg35
36
37 38
39 左40 右41
42 43 44 45 46 47 48

JavaScript:1 $(function(){ 2 var index = 1, //默认的当前索引为1,因为clone了最有一个dom在第一个前面做衔接 3 moveWidth = 360; //每次需要移动的像素值 4 5 //左移动 6 $('#btnLeft').on('click',function(){ 7 //每次+1 8 index++; 9 //通过索引乘以移动像素值,那么就得到了移动的步位10 $('.wrap-list').css({ transform:'translate3d(-'+ (index * moveWidth) +'px,0,0);transition-duration: 0.3s;' });11 //这里的判断是衔接的关键所在,如果当前索引已经是最后一个dom了,也就是我们clone好的这个dom了,那就说明已经需要开始重新开始新的一轮了12 if(index == $('.wrap-list img').size() - 1){13 //css3的动画有一个300毫秒的执行时间,所以我们这里也需要等待300毫秒后再进行重置操作14 setTimeout(function () {15 //重置索引为1,相当于重头开始16 index = 1;17 //重置wrap盒子为默认的其实位置开始,这里的css3的效果被去除了,所以看不出来有移动的效果,我们注意看transition-duration:0s;18 $('.wrap-list').css({transform: 'translate3d(-' + (index * moveWidth) + 'px,0,0);transition-duration: 0s;'})19 }, 300);20 }21 });22 23 //右移动24 $('#btnRight').on('click',function(){25 //每次减一26 index--;27 //通过索引乘以移动像素值,那么就得到了移动的步位28 $('.wrap-list').css({ transform:'translate3d(-'+ (index * moveWidth) +'px,0,0);transition-duration: 0.3s;' });29 //这里的判断是衔接的关键所在,跟向右移是一个意思,等于0的时候就是到了clone的dom了,也就需要重新开始新的一轮了30 if(index === 0) {31 //css3的动画有一个300毫秒的执行时间,所以我们这里也需要等待300毫秒后再进行重置操作32 setTimeout(function () {33 //这里就需要设置到除去两个clone的dom之外的最后一个dom索引来34 index = $('.wrap-list img').size() - 2;35 //重置wrap盒子为默认的其实位置开始,这里的css3的效果被去除了,所以看不出来有移动的效果,我们注意看transition-duration:0s;36 $('.wrap-list').css({transform: 'translate3d(-' + (index * moveWidth) + 'px,0,0);transition-duration: 0s;'})37 }, 300);38 }39 });40 });

点击这里查看DEMO演示

是不是很简单,其实我们只要知道了原理,我们就可以去封装一个轮播插件,大家还可以加上自动滚动等监听事件。

好了,实现思路就分享到这里!如果大家有更好的建议或者想法欢迎给我留言!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值