国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用javascript實(shí)現(xiàn)圖片輪播簡(jiǎn)單版示例

3403771864 / 463人閱讀

  這篇文章簡(jiǎn)而言之就是說(shuō)用javascript實(shí)現(xiàn)圖片輪播簡(jiǎn)單效果的具體代碼,直接放代碼:

  這里是css樣式

  * {
  margin: 0;
  padding: 0;
  }
  ul,
  li {
  list-style: none;
  }
  img {
  display: block;
  /*vertical-align: middle;*/
  }
  a {
  text-decoration: none;
  }
  input {
  outline: none;
  }
  .clearFix:after {
  content: "";
  display: table;
  clear: both;
  }
  #box {
  position: relative;
  width: 500px;
  height: 300px;
  margin: 50px auto;
  overflow: hidden;
  }
  #box .imglist {
  position: absolute;
  left: -500px;
  top: 0;
  width: 3500px;
  height: 300px;
  }
  #box .imglist li {
  float: left;
  width: 500px;
  height: 300px;
  }
  #box .imglist li img {
  width: 500px;
  height: 300px;
  }
  #box span {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 25px;
  height: 50px;
  background-color: rgba(200, 200, 200, 0.7);
  font-size: 20px;
  text-align: center;
  line-height: 50px;
  color: white;
  opacity: 0;
  transition: opacity 1s;
  }
  #box .left {
  left: 0;
  }
  #box .right {
  right: 0;
  }
  #box .btnlist {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 10px;
  overflow: hidden;
  }
  #box .btnlist li {
  float: left;
  width: 10px;
  height: 10px;
  margin-right: 10px;
  border-radius: 50%;
  background-color: gray;
  }
  #box .btnlist li.current {
  background-color: red;
  }

  這里是body里的div,圖片都是寬500px的,這個(gè)是我設(shè)計(jì)的,你也可以按照自己的尺寸來(lái)

  <div id="box">
  <ul class="imglist">
  <li><img src="images/yaya5.jpg" /></li>
  <li><img src="images/yaya1.jpg" /></li>
  <li><img src="images/yaya2.jpg" /></li>
  <li><img src="images/yaya3.jpg" /></li>
  <li><img src="images/yaya4.jpg" /></li>
  <li><img src="images/yaya5.jpg" /></li>
  <li><img src="images/yaya1.jpg" /></li>
  </ul>
  <span class="left"> < </span>
  <span class="right"> > </span>
  <ul class="btnlist">
  <li class="current"></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  </ul>
  </div>

  這里是js代碼,代碼大部分地方都做了注釋

  // 元素對(duì)象
  var left = document.querySelector(".left");
  var right = document.querySelector(".right");
  var imglist = document.querySelector(".imglist");
  var box = document.querySelector("#box");
  var dots = document.querySelectorAll(".btnlist li");
  // 變量區(qū)
  var imgWidth = 500; //圖片的寬度
  var time = 500; //切換一張圖片耗費(fèi)的時(shí)間
  var steps = 50; //步數(shù)
  var interval = 10; //定時(shí)任務(wù)的時(shí)間間隔
  var current_red = 0;
  // isMoving變量用于判斷當(dāng)前是否正在切圖中
  var isMoving = false;
  // 自動(dòng)輪播定時(shí)任務(wù)的id值
  var autoId;
  // 鼠標(biāo)移入時(shí)顯示左右箭頭,移出時(shí)隱藏左右箭頭
  box.addEventListener("mouseenter", function (e) {
  left.style.opacity = 1;
  right.style.opacity = 1;
  // 鼠標(biāo)移入到box時(shí)停止輪播
  clearInterval(autoId);
  });
  box.addEventListener("mouseleave", function (e) {
  left.style.opacity = 0;
  right.style.opacity = 0;
  // 鼠標(biāo)移出box時(shí)開(kāi)啟自動(dòng)輪播
  autoMove();
  });
  // 對(duì)左右箭頭設(shè)置點(diǎn)擊事件
  function move(e, direction) {
  // isMoving為true時(shí)表示正在切換圖片,不能再執(zhí)行move函數(shù)的代碼
  if (isMoving) {
  return;
  }
  isMoving = true;
  // 獲取當(dāng)前imglist的位置
  var start_x = imglist.offsetLeft;
  var end_x;
  // 判斷direction的數(shù)據(jù)類型
  if (typeof direction === "number") {
  end_x = direction;
  var delta_x = end_x - start_x;
  } else {
  // 通過(guò)點(diǎn)擊的箭頭確定圖片移動(dòng)的距離
  var delta_x = direction === "left" ? imgWidth : -imgWidth;
  // 計(jì)算要移動(dòng)到的位置
  end_x = start_x + delta_x;
  }
  // 計(jì)算每一步移動(dòng)的距離
  var step_dis = delta_x / steps;
  var next_inter_id = setInterval(function () {
  var current_x = imglist.offsetLeft;
  current_x += step_dis;
  imglist.style.left = current_x + "px";
  // 條件成立表示完成了此次圖片的切換,清除定時(shí)器
  if (current_x === end_x) {
  // current_x等于0表示此時(shí)顯示的是位置上的第一張圖片(第一個(gè)li),我們要切換到倒數(shù)第二張去。
  if (current_x === 0) {
  imglist.style.left = -2500 + "px";
  // current_x等于-3000表示此時(shí)顯示的是位置上的最后一張(第七個(gè)li),我們要切換到第二張圖片去。
  } else if (current_x === -3000) {
  imglist.style.left = -500 + "px";
  }
  clearInterval(next_inter_id);
  // 圖片切換完成時(shí)切換小圓點(diǎn),傳入的參數(shù)是此時(shí)imglist的left屬性的值
  changeDots(current_x);
  // 圖片切換完成,可以繼續(xù)點(diǎn)擊箭頭或小圓點(diǎn)切圖了
  isMoving = false;
  }
  }, interval);
  }
  right.addEventListener("click", function (e) {
  move(e, "right");
  });
  left.addEventListener("click", function (e) {
  move(e, "left");
  });
  /*
  無(wú)限循環(huán)的實(shí)現(xiàn)思路:在首尾各添加一張圖片,首部添加第五張圖片,尾部添加第一張圖片
  1、改變imglist的寬度
  2、改變imglist元素中l(wèi)eft的值
  3、在添加兩張圖片后,輪播到第一張和最后一張時(shí)實(shí)現(xiàn)切換。
  */
  // 小圓點(diǎn)的切換
  function changeDots(current_x) {
  /*
  current_x可能的取值:0 -500 -1000 -1500 -2000 -2500 -3000
  除以-500: 0 1 2 3 4 5 6
  整體減去1: -1 0 1 2 3 4 5
  */
  var index = current_x / -500 - 1;
  index = index === -1 ? 4 : index === 5 ? 0 : index;
  // console.log(index);
  // 把上一個(gè)小圓點(diǎn)紅色背景清除
  dots[current_red].className = "";
  // 把當(dāng)前切換到的圖片對(duì)應(yīng)的小圓點(diǎn)添加紅色背景
  dots[index].className = "current";
  // 將當(dāng)前紅色背景的小圓點(diǎn)的索引賦值給current_red變量
  current_red = index;
  }
  // 小圓點(diǎn)的點(diǎn)擊事件
  for (var i = 0; i < dots.length; i++) {
  dots[i].setAttribute("data-index", i);
  dots[i].onclick = function (e) {
  var index = this.dataset.index;
  // 計(jì)算圖片要切換到的目標(biāo)位置
  var target_pos = -imgWidth * (Number(index) + 1);
  // 利用現(xiàn)有的move函數(shù)完成點(diǎn)擊小圓點(diǎn)圖片的切換
  move(e, target_pos);
  };
  }
  // 實(shí)現(xiàn)自動(dòng)輪播
  function autoMove() {
  autoId = setInterval(function () {
  move("right");
  }, 3000);
  }
  autoMove();


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128203.html

相關(guān)文章

  • 手把手教你原生JavaScript造輪子(2)——輪播圖(更新:ES6本)

    摘要:綁定輪播事件然后是鼠標(biāo)移入移出事件的綁定鼠標(biāo)移入移出事件移入時(shí)停止輪播播放的定時(shí)器,移出后自動(dòng)開(kāi)始下一張的播放。 通過(guò)上一篇文章的學(xué)習(xí),我們基本掌握了一個(gè)輪子的封裝和開(kāi)發(fā)流程。那么這次將帶大家開(kāi)發(fā)一個(gè)更有難度的項(xiàng)目——輪播圖,希望能進(jìn)一步加深大家對(duì)于面向?qū)ο蟛寮_(kāi)發(fā)的理解和認(rèn)識(shí)。 So, Lets begin! 目前項(xiàng)目使用 ES5及UMD 規(guī)范封裝,所以在前端暫時(shí)只支持標(biāo)簽的引入方式...

    jasperyang 評(píng)論0 收藏0
  • JavaScript 進(jìn)階知識(shí) - 特效篇(一)

    摘要:之前是一個(gè)全局變量,如果不獨(dú)立,頁(yè)面只有一個(gè)定時(shí)器在運(yùn)作。這時(shí)的判斷條件應(yīng)該是目標(biāo)距離與盒子目前距離之間差的絕對(duì)值大于等于一步距離絕對(duì)值的時(shí)候,讓他們執(zhí)行否則的話清除清除定時(shí)器,并將最后的距離直接設(shè)置為的距離。 showImg(https://segmentfault.com/img/remote/1460000012623412?w=1920&h=1080); JS特效 前言 經(jīng)過(guò)前...

    curlyCheng 評(píng)論0 收藏0
  • 前端常插件、工具類庫(kù)匯總

    摘要:頁(yè)面調(diào)試騰訊開(kāi)發(fā)維護(hù)的代碼調(diào)試發(fā)布,錯(cuò)誤監(jiān)控上報(bào),用戶問(wèn)題定位。同樣是由騰訊開(kāi)發(fā)維護(hù)的代碼調(diào)試工具,是針對(duì)移動(dòng)端的調(diào)試工具。前端業(yè)務(wù)代碼工具庫(kù)。動(dòng)畫庫(kù)動(dòng)畫庫(kù),也是目前通用的動(dòng)畫庫(kù)。 本人微信公眾號(hào):前端修煉之路,歡迎關(guān)注 本篇文章整理自己使用過(guò)的和看到過(guò)的一些插件和工具,方便日后自己查找和使用。 另外,感謝白小明,文中很多的工具來(lái)源于此。 彈出框 layer:http://layer....

    GitCafe 評(píng)論0 收藏0
  • 前端基本功-示例代碼(一)

    摘要:惰性載入表示函數(shù)執(zhí)行的分支只會(huì)發(fā)生一次,這里有兩種解決方式。插件,可以讓回調(diào)函數(shù)在頁(yè)面結(jié)構(gòu)加載完成后再運(yùn)行。 前端基本功-示例代碼 (一) 點(diǎn)這里前端基本功-示例代碼 (二) 點(diǎn)這里 1.ajax var xhr = new XMLHttpRequest(); // 聲明一個(gè)請(qǐng)求對(duì)象 // 前端設(shè)置是否帶cookie xhr.withCredentials = true; xhr....

    wapeyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<