jQuery实现的3D版图片轮播示例【滑动轮播】


Posted in jQuery onJanuary 18, 2019

本文实例讲述了jQuery实现的3D版图片轮播。分享给大家供大家参考,具体如下:

这个是用了3张图,来回滑动,类似一个圆圈(不晓得这个 怎么上动图啊!!!!)

jQuery实现的3D版图片轮播示例【滑动轮播】

图就是这么个图,但是他是可以滑动的(不好描述啊!!)

贴代码比较方便。。。

<div class="banner">
 <div class="banner_li left">
  <img src="2.jpg" />
 </div>
 <div class="banner_li active">
  <img src="img/borderlands_tiny_tina.jpg" />
 </div>
 <div class="banner_li right">
  <img src="img/lang_yie_ar_kung_fu.jpg" />
 </div>
</div>

布局就是这么个布局,自己找图片替换一下吧

重点是css部分的css3的一些属性,灵活运用transform和transition

*{
 margin: 0;
 padding: 0;
}
.banner{
 width: 100%;
 height: 3rem;
 position: relative;
 overflow: hidden;
 padding:.2rem;
 box-sizing: border-box;
 margin-top: 1rem;
 font-size: .1rem;
}
.banner .banner_li,.banner .banner_li img{
 width: 100%;
 height: 2.58rem;
 transition: all 0.3s ease 0s;
}
.banner .banner_li{
 position: absolute;
 left: 0;
 top: .21rem;
}
 .left img{
  transform: scale(.256,.88) translateX(-122%);
 }
 .active{
  transform: scale(.352,1);
  z-index: 2;
  /*box-shadow: 0 0 .2rem red;*/
 }
.right img{
 transform: scale(.256,.88) translateX(122%);
}

上面的 transform的放大倍数是经过计算了的,相当于自身的大小乘以这个倍数就是现在的大小,偏移量也是计算后的。

transition一定要写上,有没有3d的效果全看这个了。

js部分比较简单了,要注意滑动开始、滑动过程以及滑动结束的公共变量的控制。贴代码。。。

$(function() {
 var dis, startX, moveX, endX, current_index = 0,
  touchflag = true,num=0;
 $('.banner').on('touchstart', function(e) {
  startX = e.originalEvent.changedTouches[0].pageX;
 });
 $('.banner').on('touchmove', function(e) {
  moveX = e.originalEvent.changedTouches[0].pageX;
  dis = moveX - startX;
  if(touchflag){
   touchflag=false
   if(dis > 2) {
    console.log('上一张',current_index);
    if(current_index == 0) {
     current_index = $('.banner_li').length - 1;
     $('.banner .banner_li:eq(' + current_index + ')').removeClass('right').addClass('left').prev().removeClass('active').addClass('right');
     $('.banner .banner_li:eq(' + current_index + ')').prev().prev().removeClass('left').addClass('active');
    } else {
     current_index--;
     $('.banner .banner_li:eq(' + current_index + ')').removeClass('right').addClass('left');
     $('.banner .banner_li:eq(' + current_index + ')').next().removeClass('left').addClass('active');
     $('.banner .banner_li:eq(' + current_index + ')').next().next().removeClass('active').addClass('right')
     $('.banner .banner_li:eq(' + current_index + ')').prev().removeClass('active').addClass('right');
    }
   } else if(dis < -2) {
    console.log('下一张')
    if(current_index==2){
     current_index=0;
     $('.banner .banner_li:eq(' + current_index + ')').removeClass('active').addClass('left');
     $('.banner .banner_li:eq(' + current_index + ')').next().removeClass('right').addClass('active');
     $('.banner .banner_li:eq(' + current_index + ')').next().next().removeClass('left').addClass('right');
    }else{
     current_index++;
     $('.banner .banner_li:eq(' + current_index + ')').removeClass('active').addClass('left');
     $('.banner .banner_li:eq(' + current_index + ')').next().removeClass('right').addClass('active');
     $('.banner .banner_li:eq(' + current_index + ')').prev().removeClass('left').addClass('right');
     $('.banner .banner_li:eq(' + current_index + ')').prev().prev().removeClass('right').addClass('active');
    }
   }
  }
 });
 $('.banner').on('touchend', function(e) {
  endX = e.originalEvent.changedTouches[0].pageX;
  touchflag=true
  console.log(num++,current_index)
 })
});

变量current_index是指永远在最左边的div的序号,给一个touch_flag是避免滑动出现混乱,滑动结束之后要还原这个变量,变量num没啥用,就是我自己看看,endX也没用。

要是需要更加精细的效果,你们自己调整吧,我好累啊。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
js和jquery中获取非行间样式
May 05 jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
jQuery自定义多选下拉框效果
Jun 19 jQuery
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
jQuery中使用validate插件校验表单功能
May 24 jQuery
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 jQuery
jQuery实现聊天对话框
Feb 08 jQuery
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 #jQuery
jquery的$().each和$.each的区别
Jan 18 #jQuery
jquery层次选择器的介绍
Jan 18 #jQuery
jQuery无冲突模式详解
Jan 17 #jQuery
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 #jQuery
Jquery获取radio选中值实例总结
Jan 17 #jQuery
jquery获取img的src值实例介绍
Jan 16 #jQuery
You might like
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
Python lambda表达式用法实例分析
2018/12/25 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
光荣入党自我鉴定
2014/01/22 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
小学二年级学生评语
2014/04/21 职场文书
好人好事演讲稿
2014/09/01 职场文书
论群众路线学习笔记
2014/11/06 职场文书
2015年工会工作总结
2015/03/30 职场文书
收银员岗位职责范本
2015/04/07 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
python随机打印成绩排名表
2021/06/23 Python