国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

js實現移動端輪播圖效果

來源:懂視網 責編:小OO 時間:2020-11-27 22:32:43
文檔

js實現移動端輪播圖效果

本文實例為大家分享了移動端輪播圖效果展示的具體代碼,供大家參考,具體內容如下:<,0,0,需要把瀏覽器的默認行為阻止掉 $(document).on('touchmove touchstart touchend',strY,endX,endY){ return Math.abs(endX - strX)>;30 || Math.abs(endY - strY) >;30) } function swipeDir(strX,strY,endX,strY,endX,endY).dir = swipeDir(strX,strY,endX,-step*winW);lazyImg();//動畫運動過程中,我們監聽一個定時器:動畫運動完成判斷當前是否運動到邊界,如果運動到達了邊界。
推薦度:
導讀本文實例為大家分享了移動端輪播圖效果展示的具體代碼,供大家參考,具體內容如下:<,0,0,需要把瀏覽器的默認行為阻止掉 $(document).on('touchmove touchstart touchend',strY,endX,endY){ return Math.abs(endX - strX)>;30 || Math.abs(endY - strY) >;30) } function swipeDir(strX,strY,endX,strY,endX,endY).dir = swipeDir(strX,strY,endX,-step*winW);lazyImg();//動畫運動過程中,我們監聽一個定時器:動畫運動完成判斷當前是否運動到邊界,如果運動到達了邊界。

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

<!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>

邊界判斷邏輯可參照下圖

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js實現移動端輪播圖效果

本文實例為大家分享了移動端輪播圖效果展示的具體代碼,供大家參考,具體內容如下:<,0,0,需要把瀏覽器的默認行為阻止掉 $(document).on('touchmove touchstart touchend',strY,endX,endY){ return Math.abs(endX - strX)>;30 || Math.abs(endY - strY) >;30) } function swipeDir(strX,strY,endX,strY,endX,endY).dir = swipeDir(strX,strY,endX,-step*winW);lazyImg();//動畫運動過程中,我們監聽一個定時器:動畫運動完成判斷當前是否運動到邊界,如果運動到達了邊界。
推薦度:
標簽: 輪播 實現 js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久国产成人精品 | 国产一区二区在线视频 | 国产欧美日韩另类va在线 | 色妞妞视频 | 精品国产乱码久久久久久一区二区 | 九一毛片 | 欧美精品专区免费观看 | 亚洲 欧美 日韩在线 | 思久久 | 成人精品视频在线观看完整版 | 久久伊人免费 | 美女视频黄全免费的 | 日韩在线无 | 亚洲 欧美 日韩 综合 | 国产一区91 | 国产成人h福利小视频在线观看 | 国产一级毛片在线 | 午夜精品一区二区三区在线观看 | 欧美日韩免费电影 | 亚洲欧美日韩高清一区二区一 | 国产不卡网 | 日韩欧美高清一区 | 国产欧美日韩另类va在线 | 亚洲人一区 | 亚洲日本一区二区三区 | 欧美亚洲综合激情在线 | 日韩欧美网址 | 国产免费一区二区三区香蕉精 | 成人美女黄网站色大色费 | 国产一在线精品一区在线观看 | 日本黄一级日本黄二级 | 大陆一级毛片 | 国产精品免费精品自在线观看 | 精品亚洲一区二区 | 天码毛片一区二区三区入口 | 欧美在线一区二区三区 | 国产精品免费_区二区三区观看 | 国产成人无精品久久久 | 国产一区二区三区毛片 | 国产精品久久永久免费 | 欧美激情伦妇在线观看 |