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

首頁 > 編程 > JavaScript > 正文

JS仿京東移動端手指撥動切換輪播圖效果

2019-11-19 18:34:11
字體:
來源:轉載
供稿:網友

如今,移動端web頁面在市場上也是占有相當大的比例,而移動端的輪播圖效果也是很常見的,今天我就來記錄下關于實現一組適用于移動端的可用手指進行撥動切換輪播圖的效果。
這個效果的主要技術點依托于觸屏設備特有的touch事件;好了,接下來就進入主題吧。

首先是html布局

1. 這里強調的是記得給html加上viewport這個適口屬性。
2. 由于在撥動第一張圖片以及最后一張圖片的時候需要切換到最后一張以及第一張,要想達到理想效果,需要給第一張圖片前面加上最后一張圖片,而在最后一張圖片后加上第一張圖片。
3. f_l代表的是左浮動

**html代碼如下:**

    <ul class='banner_imgs clearfix'>     <li class='f_l'>      <a href="#"><img src="image/l8.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l1.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l2.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l3.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l4.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l5.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l6.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l7.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l8.jpg" alt="" /></a>     </li>     <li class='f_l'>      <a href="#"><img src="image/l1.jpg" alt="" /></a>     </li>    </ul>    <!-- 輪播圖的 索引 -->    <ul class="banner_index clearfix">     <li class="current"></li>     <li></li>     <li></li>     <li></li>     <li></li>     <li></li>     <li></li>     <li></li>    </ul>

接下來是css樣式

注意,此處并沒有加上常規的reset樣式代碼

.jd_banner .banner_imgs { /* 10倍屏幕寬度 */ width: 1000%;}.jd_banner .banner_imgs li { /* 一倍的屏幕寬度 */ width: 10%;}.jd_banner .banner_imgs li a { display: block; width: 100%;}.jd_banner .banner_imgs li a img { display: block; width: 100%;}.jd_banner .banner_index { position: absolute; bottom: 15px; left: 50%; margin-left: -64px;}.jd_banner .banner_index li { float: left; width: 6px; height: 6px; border: 1px solid white; border-radius: 50%; margin: 0 5px;}.jd_banner .banner_index li.current { background-color: #fff;}

最后是最最重要的js代碼

1. transitionend 過渡結束后觸發的效果,在這兒主要是保證圖片切換到最后一張我們手動增加的圖片完成的瞬間,切換回到真正的第一張圖片處;
2. touch事件的三要素: touchstart--手指按上時,touchmove--手指移動時,touchend--手指松開屏幕時;
3. event.touches[0].clientX獲取按下一個手指時的位置,可以打印出event查看其包含有哪些屬性方法;

window.onload = function() { slide();}function slide() { var bannerImgs = document.querySelector(".banner_imgs"); var Indexs = document.querySelectorAll(".banner_index li"); var imgLis = document.querySelectorAll(".banner_imgs li"); //屏幕寬度 var screenWidth = document.body.offsetWidth; var index = 1; //默認顯示的應該是第二張圖片 bannerImgs.style.transform = "translateX(" + screenWidth * index * -1 + "px)"; //添加過渡效果 function setTransition() {  bannerImgs.style.webkitTransition = "all .2s";  bannerImgs.style.transition = "all .2s"; } //清除過渡效果 function clearTransition() {  bannerImgs.style.webkitTransition = "none";  bannerImgs.style.transition = "none"; } //設置移動距離 function setTranslateX(distance) {  bannerImgs.style.webkitTransform = "translateX(" + distance + "px)";  bannerImgs.style.transform = "translateX(" + distance + "px)"; } //控制小圓點 function setPoint() {  for (var i = 0; i < Indexs.length; i++) {   Indexs[i].className = "";  }  Indexs[index - 1].className = "current"; } //設置定時器 var timer = setInterval(function() {  index++;  setTransition();  setTranslateX(screenWidth * index * -1); }, 1000); //添加過渡動畫結束事件 bannerImgs.addEventListener("transitionend", function() {  if (index > 8) {   index = 1;  } else if (index < 1) {   index = 8;  }  clearTransition();  setTranslateX(screenWidth * index * -1);  setPoint(); }) //添加touch事件 var startX = 0; var moveX = 0; var isMove = false; bannerImgs.addEventListener("touchstart", function(event) {  isMove = false;  clearInterval(timer);  startX = event.touches[0].clientX; }) bannerImgs.addEventListener("touchmove", function(event) {  isMove = true;  moveX = event.touches[0].clientX - startX;  setTranslateX(moveX + index * screenWidth * -1); }) bannerImgs.addEventListener("touchend", function(event) {  if(isMove && Math.abs(moveX) > screenWidth/3){   if (moveX < 0) {    index++;   } else if (moveX > 0) {    index--;   }  }  setTransition();  setTranslateX(index * screenWidth * -1);  timer = setInterval(function() {   index++;   setTransition();   setTranslateX(screenWidth * index * -1);  }, 1000); })}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定州市| 忻州市| 诸暨市| 万荣县| 扎鲁特旗| 红河县| 邵阳市| 修文县| 涞源县| 政和县| 开阳县| 封开县| 桃江县| 酒泉市| 荆门市| 平湖市| 青海省| 博罗县| 邮箱| 佛山市| 神木县| 阜阳市| 云南省| 晋中市| 漳平市| 全椒县| 财经| 万山特区| 吉木乃县| 林甸县| 郯城县| 岳西县| 锡林郭勒盟| 库伦旗| 尼勒克县| 剑阁县| 和硕县| 贵阳市| 伊宁市| 黄龙县| 天津市|