国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js實現(xiàn)移動端輪播圖效果

2019-11-19 15:47:37
字體:
供稿:網(wǎng)友

本文實例為大家分享了移動端輪播圖效果展示的具體代碼,供大家參考,具體內(nèi)容如下

<!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'> <!--實現(xiàn)無縫滾動:把第一張放末尾 最后一張放開頭--> <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(); //動畫運動過程中,我們監(jiān)聽一個定時器:動畫運動完成判斷當前是否運動到邊界,如果運動到達了邊界,我們讓其立馬回到自己的真實位置 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存儲或者獲取的屬性值都是一個字符串,如果當前的圖片已經(jīng)加載過了,我們就不需要重新的加載了  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>

邊界判斷邏輯可參照下圖

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚州市| 新郑市| 宣化县| 澎湖县| 茂名市| 盘锦市| 嵊州市| 大冶市| 句容市| 营口市| 米泉市| 六安市| 湘西| 汪清县| 怀远县| 广昌县| 仪征市| 镇赉县| 武乡县| 嘉黎县| 惠来县| 石台县| 太保市| 宝应县| 正定县| 会同县| 天津市| 新巴尔虎左旗| 松阳县| 惠东县| 曲阳县| 甘洛县| 汉阴县| 防城港市| 英德市| 武陟县| 上杭县| 威信县| 白水县| 深水埗区| 寿阳县|