最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)PC端橫向輪播圖

 更新時(shí)間:2020年02月07日 16:34:52   作者:菜鳥向往藍(lán)天  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)PC端橫向輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)PC端橫向輪播圖的具體代碼,供大家參考,具體內(nèi)容如下

步驟:

第一步:先實(shí)現(xiàn)右側(cè)按鈕點(diǎn)擊圖片動(dòng)起來;
1.每次點(diǎn)擊圖片走的距離;
2.起始位置已知,計(jì)算定時(shí)器每走一小步的距離;

第二步:判斷點(diǎn)擊按鈕一次圖片移動(dòng)的距離,停止定時(shí)器;

第三步:左邊按鈕邏輯和右側(cè)按鈕幾乎一致;
1.因此封裝函數(shù)move(flag),函數(shù)傳參是Boolean則是左右按鈕方向

第四步:無縫輪播:html結(jié)構(gòu)修改,在當(dāng)前結(jié)構(gòu)分別加第一張圖和最后一張圖;
1.判斷圖片位置,設(shè)置相應(yīng)位置;

第五步:小圓點(diǎn)邏輯:排他思想;
1.關(guān)鍵在于小圓點(diǎn)變色,用最終位置計(jì)算小圓點(diǎn)下標(biāo),設(shè)置樣式;

第六步:點(diǎn)擊小圓點(diǎn),圖片切換和小圓點(diǎn)位置對(duì)應(yīng),move函數(shù)中傳參數(shù)根據(jù)類型判斷,boolean 是左右按鈕,數(shù)值室小圓點(diǎn)下標(biāo)相關(guān);flag參數(shù)代表左右按鈕和小圓點(diǎn);

第七步:自動(dòng)輪播:根據(jù)圖片下標(biāo)進(jìn)行;

第八步:自動(dòng)輪播和鼠標(biāo)行為同步時(shí):鼠標(biāo)移入清楚自動(dòng)輪播;鼠標(biāo)移出自動(dòng)輪播

第九步:鼠標(biāo)移入后,點(diǎn)擊按鈕和小圓點(diǎn)有需要把自動(dòng)輪播的小標(biāo)值更新,否則沒法同步;

html代碼:

<div id="swiper">
 <ul class="list">
  <li><img src="img/9.jpg" alt=""></li>
  <!-- 最后一張 -->
  <li><img src="img/2.jpg" alt=""></li>
  <li><img src="img/3.jpg" alt=""></li>
  <li><img src="img/4.jpg" alt=""></li>
  <li><img src="img/6.jpg" alt=""></li>
  <li><img src="img/9.jpg" alt=""></li>
  <!-- 第一張 -->
  <li><img src="img/2.jpg" alt=""></li>
 </ul>
 <span class="btn-left">&lt;</span>
 <span class="btn-right">&gt;</span>
 <ul class="points">
  <li class="current"></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

css代碼:

<style type="text/css">
 * {
  margin: 0;
  padding: 0;
 }
 
 ul,
 li {
  list-style: none;
 }
 
 a {
  text-decoration: none;
 }
 
 img {
  display: block;
 }
 
 input {
  outline: none;
 }
 
 .clearFix:after {
  content: '';
  display: block;
  clear: both;
 }
 /*禁止系統(tǒng)滾動(dòng)條*/
 
 html,
 body {
  height: 100%;
  overflow: hidden;
 }
 
 #swiper {
  position: relative;
  width: 1000px;
  height: 500px;
  background: green;
  margin: 50px auto 0;
  overflow: hidden;
 }
 
 #swiper .list {
  position: absolute;
  left: -1000px;
  top: 0;
  width: 7000px;
  overflow: hidden;
 }
 
 #swiper .list>li {
  float: left;
  width: 1000px;
  height: 500px;
 }
 
 #swiper .list>li img {
  width: 100%;
  height: 100%;
 }
 
 #swiper span {
  position: absolute;
  /* left: 0; */
  top: 40%;
  transform: translateY(-50%);
  width: 80px;
  height: 100px;
  background: rgba(0, 0, 0, 0.5);
  font-size: 50px;
  color: white;
  font-weight: bold;
  padding-top: 30px;
  text-align: center;
  opacity: 0;
  transition: opacity 1s;
  cursor: pointer;
 }
 
 #swiper:hover span {
  opacity: 1;
 }
 
 #swiper .btn-left {
  left: 0;
 }
 
 #swiper .btn-right {
  right: 0;
 }
 
 #swiper .points {
  position: absolute;
  left: 40%;
  transform: translateX(-50%);
  bottom: 20px;
  /* width: 300px; */
 }
 
 #swiper .points>li {
  width: 30px;
  height: 30px;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 50%;
  float: left;
  margin: 0 5px;
 }
 
 #swiper .points .current {
  background: red;
 }
</style>

javascript代碼:

<script>
 window.onload = function() {
  // 獲取變量
  var swiper = document.querySelector('#swiper');
  var list = document.querySelector('#swiper .list');
  var liNodes = document.querySelectorAll('#swiper .list>li');
  var btnNodes = document.querySelectorAll('#swiper span');
  // 切換一張需要的總時(shí)長(zhǎng)
  var timeAll = 1000;
  // 每走一步需要的時(shí)長(zhǎng)
  var timeStep = 20;
  var timer = null;
  // 小圓點(diǎn)
  var icons = document.querySelectorAll('#swiper>.points li');
  var isMove = false;
  var autoTimer = null;

  // 鼠標(biāo)進(jìn)入banner
  swiper.onmouseenter = function() {
  // 清除定時(shí)器
  clearInterval(autoTimer);
  }

  // 鼠標(biāo)離開banner
  swiper.onmouseleave = function() {
  // 打開自動(dòng)輪播定時(shí)器
  autoRun();
  }

  // 點(diǎn)擊按鈕切換圖片
  // 右按鈕
  btnNodes[1].onclick = function() {
  // 圖片且切換函數(shù)
  move(true);
  }

  // 左按鈕
  btnNodes[0].onclick = function() {
  // 圖片切換函數(shù)
  move(false);
  }

  // 圖片切換函數(shù)
  function move(flag) {
  // 保證定時(shí)器只開一個(gè),不會(huì)堆砌
  if (isMove) {
   return;
  }
  isMove = true;


  // 區(qū)分flag參數(shù),boolean是左右圖片切換
  if (typeof flag == 'boolean') {
   if (flag) {
   var elementDistance = -1000;
   } else {
   var elementDistance = 1000;
   }
  } else {
   var elementDistance = flag - list.offsetLeft;
  }

  // 每次點(diǎn)擊后,ul所走的距離
  var elementLast = list.offsetLeft + elementDistance;
  // 每走一小步的距離
  var step = elementDistance / (timeAll / timeStep);

  timer = setInterval(function() {
   var left = list.offsetLeft + step;
   if (left == elementLast) {
   // 走的的距離等于最終的位置
   clearInterval(timer);
   if (left == -6000) {
    left = -1000;
   } else if (left == 0) {
    left = -5000;
   }
   isMove = false;
   }
   // 設(shè)置樣式
   list.style.left = left + 'px';
  }, timeStep);

  // 小圓點(diǎn)切換邏輯
  for (var i = 0; i < icons.length; i++) {
   icons[i].className = '';
  }

  // 小圓點(diǎn)切換
  var index = elementLast / -1000 - 1;
  if (index > 4) {
   index = 0;
  } else if (index < 0) {
   index = 4;
  }
  icons[index].className = 'current';
  console.log(icons);
  //讓自動(dòng)輪播和點(diǎn)擊后下標(biāo)保持統(tǒng)一
  autoIndex = index + 1;
  }

  // 點(diǎn)擊小圓點(diǎn)邏輯
  for (var i = 0; i < icons.length; i++) {
  icons[i].index = i;
  icons[i].onclick = function() {
   // 拿小圓點(diǎn)下標(biāo),求顯示圖片的下標(biāo),再求顯示圖片位置
   move((this.index + 1) * -1000);
  }
  }

  // 自動(dòng)輪播邏輯
  var autoIndex = 1;
  autoRun();

  function autoRun() {
  autoTimer = setInterval(function() {
   autoIndex++;
   move(autoIndex * -1000);
   if (autoIndex == 6) {
   autoIndex = 1;
   }
  }, 2000);
  }
 }
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js加減乘除精度丟失問題解決

    js加減乘除精度丟失問題解決

    計(jì)算機(jī)的二進(jìn)制實(shí)現(xiàn)和位數(shù)限制有些數(shù)無法有限表示,就會(huì)產(chǎn)生精度丟失問題,本文主要介紹了js加減乘除精度丟失問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 微信小程序?qū)崿F(xiàn)圖片選擇并預(yù)覽功能

    微信小程序?qū)崿F(xiàn)圖片選擇并預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)圖片選擇并預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 微信小程序vant彈窗組件的實(shí)現(xiàn)方式

    微信小程序vant彈窗組件的實(shí)現(xiàn)方式

    這篇文章主要介紹了小程序vant彈窗組件的實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • JS獲取IP、MAC和主機(jī)名的五種方法

    JS獲取IP、MAC和主機(jī)名的五種方法

    javascript獲取客戶端IP的小程序,下面的代碼是我在所有windowsNT5.0及以上的系統(tǒng)上都測(cè)試通過的,喜歡的朋友可以收藏下
    2013-11-11
  • JS高級(jí)調(diào)試技巧:捕獲和分析 JavaScript Error詳解

    JS高級(jí)調(diào)試技巧:捕獲和分析 JavaScript Error詳解

    前端工程師都知道 JavaScript 有基本的異常處理能力。我們可以 throw new Error(),瀏覽器也會(huì)在我們調(diào)用 API 出錯(cuò)時(shí)拋出異常。但估計(jì)絕大多數(shù)前端工程師都沒考慮過收集這些異常信息
    2014-03-03
  • 深入理解JavaScript中的Base64編碼字符串

    深入理解JavaScript中的Base64編碼字符串

    在我們進(jìn)行前端開發(fā)時(shí),針對(duì)項(xiàng)目?jī)?yōu)化,常會(huì)提到一條:針對(duì)較小圖片,合理使用Base64字符串替換內(nèi)嵌,可以減少頁(yè)面http請(qǐng)求。本文整理了一些Base64編碼字符串的相關(guān)知識(shí),感興趣的可以了解一下
    2023-02-02
  • js動(dòng)態(tài)生成form 并用ajax方式提交的實(shí)現(xiàn)方法

    js動(dòng)態(tài)生成form 并用ajax方式提交的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s動(dòng)態(tài)生成form 并用ajax方式提交的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 使用js獲取QueryString的方法小結(jié)

    使用js獲取QueryString的方法小結(jié)

    從網(wǎng)上看到一些使用js獲取QueryString的方法,但用起來不是很理想,所以決定自己寫一個(gè)。主要原理是使用正則表達(dá)式匹配location.search中的字符串。
    2010-02-02
  • 可以測(cè)試javascript運(yùn)行效果的代碼

    可以測(cè)試javascript運(yùn)行效果的代碼

    這篇文章主要介紹了如何在頁(yè)面中可以簡(jiǎn)單的測(cè)試一些簡(jiǎn)單的JavaScript語(yǔ)句,需要的朋友可以參考下
    2010-04-04
  • JavaScript筆記之?dāng)?shù)據(jù)屬性和存儲(chǔ)器屬性

    JavaScript筆記之?dāng)?shù)據(jù)屬性和存儲(chǔ)器屬性

    本文給大家介紹js數(shù)據(jù)屬性和存儲(chǔ)器屬性,及兩種屬性的區(qū)別,對(duì)js數(shù)據(jù)屬性存儲(chǔ)器屬性相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)
    2016-03-03

最新評(píng)論

左权县| 康定县| 分宜县| 清流县| 连云港市| 津南区| 达日县| 靖安县| 天气| 霸州市| 衡东县| 加查县| 张家口市| 平顶山市| 吉首市| 乌兰察布市| 泰州市| 夏津县| 文成县| 宁波市| 安顺市| 芦山县| 大埔区| 河北省| 黄梅县| 长汀县| 垣曲县| 从江县| 镇沅| 水富县| 儋州市| 阿城市| 鄂尔多斯市| 贡山| 平远县| 德保县| 大方县| 莫力| 巴中市| 隆化县| 阿勒泰市|