全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js实现移动端轮播图效果

本文实例为大家分享了移动端轮播图效果展示的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <title>Document</title>
 <link rel="stylesheet" href="reset.css" rel="external nofollow" >
 <style>
 html,body{
 width:100%;
 overflow-x:hidden;
 }
 html{
 font-size:100px;
 }
 .banner{
 position:relative;
 height:3rem;
 overflow:hidden;
 }
 .banner .wrapper{
 position:absolute;
 top:0;
 left:-100%;
 height:100%;
 }
 .banner .wrapper .slide{
 float:left;
 height:100%;
 background:#eee;
 }
 .banner .wrapper .slide img{
 display:none;
 width:100%;
 height:100%;
 }
 .tip{
 position:absolute;
 left:0;
 bottom:.1rem;
 width:100%;
 height:.16rem;
 text-align:center;
 }
 .tip li{
 display:inline-block;
 margin:0 .03rem;
 width:.16rem;
 height:.16rem;
 background:rgba(0,0,0,0.2);
 border-radius:50%;
 vertical-align:top;
 }
 .tip li.bg{
 background:#007aff;
 }
 </style>
</head>
<body>
 <section class='banner'>
 <div class='wrapper'>
 <!--实现无缝滚动:把第一张放末尾 最后一张放开头-->
 <div class='slide'><img data-src="img/banner5.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner1.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner2.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner3.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner4.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner5.jpg" alt=""></div>
 <div class='slide'><img data-src="img/banner1.jpg" alt=""></div>
 </div>
 <ul class='tip'>
 <li class='bg'></li>
 <li></li>
 <li></li>
 <li></li>
 <li></li>
 </ul>
 </section>

 <script charset='utf-8' src='zepto.min.js'></script>
 <script charset='utf-8'>
 //REM
 ~function(){
 document.documentElement.style.fontSize = document.documentElement.clientWidth/640*100 + 'px';
 }()
 //页面中如果自己使用了TOUCH MOVE等原生事件,需要把浏览器的默认行为阻止掉
 $(document).on('touchmove touchstart touchend',function(ev){
 ev.preventDefault();
 })
 //BANNER
 var bannerRender = (function(){
 var winW = document.documentElement.clientWidth,
 maxL = 0,
 minL = 0;
 var $banner = $('.banner'),
 $wrapper = $banner.children('.wrapper'),
 $slideList = $wrapper.children('.slide'),
 $imgList = $wrapper.find('img');
 var step = 1,
 count = 0,
 followTimer = null;

 //public fn
 function isSwipe(strX,strY,endX,endY){
 return Math.abs(endX - strX)>30 || Math.abs(endY - strY) > 30)
 }
 function swipeDir(strX,strY,endX,endY){
 return Math.abs(endX - strX)>=Math.abs(endY - strY)?(endX - strX>0?'right':'left'):(endY - strY>0?'down':'up');
 }
 //touch start
 function dragStart(ev){
 var point = ev.touches[0];
 $wrapper.attr({
 strL:parseFloat($wrapper.css('left')),
 strX:point.clientX,
 strY:point.clientY,
 isMove:false,
 dir:null,
 changeX:null
 })
 }
 //touch move
 function dragIng(ev){
 var point = ev.touches[0];
 var endX = point.clientX,
 endY = point.clientY,
 strX = parseFloat($wrapper.attr('strX')),
 strY = parseFloat($wrapper.attr('strY')),
 strL = parseFloat($wrapper.attr('strL')),
 changeX = endX - strX;
 //计算出是否滑动以及滑动的方向:只有是左右滑动才进行处理
 var isMove = isSwipe(strX,strY,endX,endY),
 dir = swipeDir(strX,strY,endX,endY);
 if(isMove && /(left|right)/i.test(dir)){
 $wrapper.attr({
 isMove:true,
 dir:dir,
 changeX:changeX
 });
 var curL = strL+changeX;
 curL = curL>maxL?maxL:(curL<minL?minL:curL);
 $wrapper[0].style.webkitTransitionDuration = '0s';
 $wrapper.css('left',curL);
 }



 }
 //touch end
 function dragEnd(){
 var isMove = $wrapper.attr('isMove'),
 dir = $wrapper.attr('dir'),
 changeX = parseFloat($wrapper.attr('changeX'));
 if(isMove && /(left|right)/i.test(dir)){
 if(Math.abs(changeX)>=winW/2){
 if(dir==='left'){
 step++;
 }else{
 step--;
 }
 }
 }

 $wrapper[0].style.webkitTransitionDuration = '.2s';
 $wrapper.css('left',-step*winW);
 lazyImg();
 //动画运动过程中,我们监听一个定时器:动画运动完成判断当前是否运动到边界,如果运动到达了边界,我们让其立马回到自己的真实位置
 window.clearTimeout(followTimer)
 followTimer = window.setTimeout(function(){
 if(step===0){
 $wrapper[0].style.webkitTransitionDuration = '0s';
 $wrapper.css('left',-(count-2)*winW);
 step = count-2;
 lazyImg();
 }
 if(step===count-1){
 $wrapper[0].style.webkitTransitionDuration = '0s';
 $wrapper.css('left',-winW);
 step = 1;
 lazyImg();
 }
 window.clearTimeout(followTimer)
 },200)

 }
 //图片延迟加载,让当前的活动块及相邻的两个活动块进行加载
 function lazyImg(){
 var $cur = $slideList.eq(step),
 $tar = $cur.add($cur.prev()).add($cur.next());
 $tar.each(function(index,item){
 var $img = $(item).children('img');
 if($img.attr('isLoad')==='true'){
 //ATTR存储或者获取的属性值都是一个字符串,如果当前的图片已经加载过了,我们就不需要重新的加载了
 return;
 }
 var oImg = new Image;
 oImg.src = $img.attr('data-src');
 oImg.onload = function(){
 $img.attr({
 src:this.src,
 isLoad:true
 }).css('display','block')
 oImg = null;
 }
 })

 }

 return{
 init:function(){
 //init css style
 count = $slideList.length;
 minL = -($slideList.length-1)*winW;
 $wrapper.css('width',$slideList.length*winW);
 $slideList.css('width',winW);
 //lazy img
 lazyImg();
 $banner.on('touchstart',dragStart).on('touchmove',dragIng).on('touchend',dragEnd)
 }
 }
 })()

 bannerRender.init();
 </script>
</body>
</html>

边界判断逻辑可参照下图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 移动端  # 轮播图  # js实现移动端轮播图滑动切换  # javascript实现移动端轮播图  # 原生js实现移动端Touch轮播图的方法步骤  # js实现移动端轮播图  # JS实现点击拉拽轮播图pc端移动端适配  # js原生实现移动端手指滑动轮播图效果的示例  # 利用纯js + transition动画实现移动端web轮播图详解  # 支持移动端原生js轮播图  # JS仿京东移动端手指拨动切换轮播图效果  # 基于javascript实现移动端轮播图效果  # 加载  # 自己的  # 都是  # 过了  # 就不  # 大家分享  # 第一张  # 让其  # 具体内容  # 大家多多  # 计算出  # 过程中  # 使用了  # tip  # eee  # img  # display  # align  # center  # background 


相关文章: 建站之星后台密码如何安全设置与找回?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  制作证书网站有哪些,全国城建培训中心证书查询官网?  IOS倒计时设置UIButton标题title的抖动问题  linux top下的 minerd 木马清除方法  C#怎么使用委托和事件 C# delegate与event编程方法  建站之星备案是否影响网站上线时间?  网站制作网站,深圳做网站哪家比较好?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  网站制作大概多少钱一个,做一个平台网站大概多少钱?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  python的本地网站制作,如何创建本地站点?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  七夕网站制作视频,七夕大促活动怎么报名?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  建站之星如何取消后台验证码生成?  如何高效配置香港服务器实现快速建站?  如何通过虚拟主机快速完成网站搭建?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何快速搭建高效服务器建站系统?  网页设计与网站制作内容,怎样注册网站?  建站主机选虚拟主机还是云服务器更好?  制作网站外包平台,自动化接单网站有哪些?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  图册素材网站设计制作软件,图册的导出方式有几种?  网站制作价目表怎么做,珍爱网婚介费用多少?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  建站之星安装提示数据库无法连接如何解决?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  简单实现Android文件上传  如何快速生成橙子建站落地页链接?  建站之星伪静态规则如何设置?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  建站主机选择指南:服务器配置与SEO优化实战技巧  专业网站建设制作报价,网页设计制作要考什么证?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  招贴海报怎么做,什么是海报招贴?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  文字头像制作网站推荐软件,醒图能自动配文字吗?  宿州网站制作公司兴策,安徽省低保查询网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。