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

原生JS實(shí)現(xiàn)無(wú)縫輪播圖片

 更新時(shí)間:2020年06月24日 16:54:58   作者:weixin_46310510  
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)無(wú)縫輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)無(wú)縫輪播圖的具體代碼,供大家參考,具體內(nèi)容如下

運(yùn)動(dòng)插件

function animove(obj,distance,speed,callback) { //調(diào)用的變量 目標(biāo)距離 速度 回調(diào)函數(shù)
 clearInterval(obj.timer);
 obj.timer = setInterval(function () {
  let step = (distance - obj.offsetLeft) / 10;
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  if (obj.offsetLeft == distance) {
  clearInterval(obj.timer);
  if (callback) {
   callback();
  }
  }
  obj.style.left = obj.offsetLeft + step + 'px';
 },speed)
}

CSS代碼

 * {
  margin: 0;
  padding: 0;
 }
 ul,li {
  list-style: none;
 }
 .box {
  width: 1226px;
  height: 460px;
  margin: 100px auto;
  position: relative;
  overflow: hidden;
 }
 .pic-box {
  width: 4904px;
  position: absolute;
 }
 .pic-box > li {
  float: left;
 }
 .point {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
 }
 .point > li {
  float: left;
  width: 8px;
  height: 8px;
  border: 1px solid blueviolet;
  margin: 0 4px;
  border-radius: 50%;
 }
 .point > .active {
  background-color: orange;
 }
 .left-btn,
 .right-btn {
  width: 50px;
  height: 40px;
  background-color: rgba(0,0,0,.5);
  text-align: center;
  line-height: 40px;
  font-size: 20px;
  color: white;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
 }
 .left-btn {
  left: 0;
 }
 .right-btn {
  right: 0;
 }

HTML代碼

<div class="box">
 <ul class="pic-box">
  <li>
  <img src="lb.webp" alt="">
  </li>
  <li>
  <img src="lb2.webp" alt="">
  </li>
  <li>
  <img src="pic3.jpg" alt="">
  </li>
 </ul>
 <ul class="point">
 </ul>
 <div class="left-btn"><</div>
 <div class="right-btn">></div>
 </div>
<script src="運(yùn)動(dòng)插件.js"></script>

js代碼

let picbox = document.querySelector('.pic-box');
 let pic = document.querySelectorAll('.pic-box > li'); //由于獲取的不是動(dòng)態(tài)的 所以之后的克隆 并不會(huì)使這個(gè)變量發(fā)生改變
 let point = document.querySelector('.point');
 let leftbtn = document.querySelector('.left-btn');
 let rightbtn = document.querySelector('.right-btn');
 let carouselindex = 0;
 //通過(guò)for循環(huán) 生成小圓點(diǎn) 并將圓點(diǎn)添加到ul里
 for (let i = 0; i < pic.length; i ++) {
  let pointli = document.createElement('li');
  pointli.classList.add(i);
  point.appendChild(pointli);
 }
 //給第一個(gè)小圓點(diǎn)默認(rèn)添加active
 point.children[0].classList.add('active');

 //克隆第一個(gè)圖片 深度
 let kelon = picbox.children[0].cloneNode(true);
 picbox.appendChild(kelon); //將圖片添加到最后位置

 //獲取所以圓點(diǎn)
 let pointli = document.getElementsByClassName('point')[0].getElementsByTagName('li');

 //輪播方法
 function carousel(index) {
  let distance = (-index * pic[0].offsetWidth); //計(jì)算行走的距離 圖片的index值乘以圖片的大小
  animove(picbox,distance,10); //調(diào)用運(yùn)動(dòng)函數(shù)
  for (let i = 0; i < pointli.length; i ++) { //for循環(huán)移除每個(gè)小點(diǎn)的選中狀態(tài)
  pointli[i].classList.remove('active');
  }
  if (index != pic.length) { //如果不等于pic的長(zhǎng)度 就執(zhí)行
  pointli[index].classList.add('active');
  } else { //如果索引值為3 說(shuō)明此時(shí)圖片為克隆的圖 而圓點(diǎn)的最大索引值為2 將第一個(gè)圓點(diǎn)設(shè)置為active即可正常顯示圓點(diǎn)狀態(tài)
  point.children[0].classList.add('active');
  }
 }
 Array.prototype.forEach.call(pointli,function (item,index) { //給每個(gè)圓點(diǎn)添加點(diǎn)擊事件
  item.addEventListener('click',function () {
   carouselindex = index;  //將點(diǎn)擊的索引值賦值給輪播索引全局變量
   carousel(carouselindex);
  })
 });
 rightbtn.addEventListener('click',function () { //右邊點(diǎn)擊事件
  carouselindex ++; //每次點(diǎn)擊全局輪播索引增加
  if (carouselindex > pic.length) { //如果索引大于圖片數(shù)量 由于數(shù)量大小獲取的是靜態(tài)的 所以長(zhǎng)度不會(huì)因?yàn)榭寺∽兓兓?
   picbox.style.left = "0px"; //如果大于索引說(shuō)明此時(shí)要離開(kāi)克隆的那張圖 此時(shí)迅速將left值設(shè)置為0
   carouselindex = 1; //然后將索引設(shè)置為1
  }
  carousel(carouselindex); //這時(shí)候就在left為0的位置 過(guò)渡到索引1的位置 實(shí)現(xiàn)無(wú)縫輪播的效果
 });
 leftbtn.addEventListener('click',function () { //左邊點(diǎn)擊事件
  carouselindex --; //減減
  if (carouselindex < 0) { //如果索引值小于0
  carouselindex = 2; //將索引值設(shè)置為2
  picbox.style.left = "-3678px"; //將位置迅速變換為第四張圖的位置(克隆的圖)
  }
  carousel(carouselindex); //由克隆的圖過(guò)渡到索引為2的圖(第三張圖)
})

精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播

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

相關(guān)文章

  • 淺析JavaScript訪問(wèn)對(duì)象屬性和方法及區(qū)別

    淺析JavaScript訪問(wèn)對(duì)象屬性和方法及區(qū)別

    這篇文章主要介紹了淺析JavaScript訪問(wèn)對(duì)象屬性和方法及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • vue 組件銷毀并重置的實(shí)現(xiàn)

    vue 組件銷毀并重置的實(shí)現(xiàn)

    這篇文章主要介紹了vue 組件銷毀并重置的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • JavaScript移除數(shù)組內(nèi)重復(fù)元素的方法

    JavaScript移除數(shù)組內(nèi)重復(fù)元素的方法

    這篇文章主要介紹了JavaScript移除數(shù)組內(nèi)重復(fù)元素的方法,實(shí)例分析了javascript遍歷數(shù)組及刪除等操作的相關(guān)技巧,需要的朋友可以參考下
    2015-03-03
  • JavaScript實(shí)現(xiàn)的字符串replaceAll函數(shù)代碼分享

    JavaScript實(shí)現(xiàn)的字符串replaceAll函數(shù)代碼分享

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)的字符串replaceAll函數(shù)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • JS中Symbol類型的介紹與基本用法

    JS中Symbol類型的介紹與基本用法

    Symbol是一種特殊的、不可變的數(shù)據(jù)類型,可以作為對(duì)象屬性的標(biāo)識(shí)符使用,表示獨(dú)一無(wú)二的值,這篇文章主要給大家介紹了關(guān)于JS中Symbol類型的介紹與基本用法的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • javascript中關(guān)于break,continue的特殊用法與介紹

    javascript中關(guān)于break,continue的特殊用法與介紹

    javascript大家所熟知中的for是一個(gè)循環(huán)體,循環(huán)體其中的break和continue也是大家都比較熟悉的功能,相信大家對(duì)它們的用法不會(huì)陌生,本文不是介紹其功能,本文假設(shè)你已經(jīng)熟悉break和continue的語(yǔ)意和用法
    2012-05-05
  • 用js讀、寫(xiě)、刪除Cookie代碼分享及詳細(xì)注釋說(shuō)明

    用js讀、寫(xiě)、刪除Cookie代碼分享及詳細(xì)注釋說(shuō)明

    JavaScript是運(yùn)行在客戶端的腳本,因此一般是不能夠設(shè)置Session的,因?yàn)镾ession是運(yùn)行在服務(wù)器端的。而cookie是運(yùn)行在客戶端的,所以可以用JS來(lái)設(shè)置cookie. 下面我們來(lái)分析下案例
    2014-06-06
  • Webpack 服務(wù)器端代碼打包的示例代碼

    Webpack 服務(wù)器端代碼打包的示例代碼

    本篇文章主要介紹了Webpack 服務(wù)器端代碼打包的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • taro小程序添加骨架屏的實(shí)現(xiàn)代碼

    taro小程序添加骨架屏的實(shí)現(xiàn)代碼

    這篇文章主要介紹了taro小程序添加骨架屏的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 基于JavaScript繪制動(dòng)態(tài)花束的示例代碼

    基于JavaScript繪制動(dòng)態(tài)花束的示例代碼

    p5.js 是一個(gè)JavaScript的函數(shù)庫(kù),它在制作之初就和Processing有同樣的目標(biāo)。本文將利用p5.js 制作出一束動(dòng)態(tài)花束,感興趣的可以嘗試一下
    2022-06-06

最新評(píng)論

休宁县| 额济纳旗| 平乐县| 米林县| 梧州市| 健康| 新宁县| 大庆市| 乡城县| 高雄市| 镇平县| 阆中市| 墨脱县| 鄂托克前旗| 甘肃省| 来宾市| 合阳县| 澎湖县| 扎兰屯市| 陇西县| 广昌县| 邵阳市| 新郑市| 民权县| 鄂托克旗| 石台县| 翁牛特旗| 高台县| 镇雄县| 湘阴县| 伊宁县| 微山县| SHOW| 淳安县| 黑河市| 东安县| 西宁市| 耒阳市| 安岳县| 神池县| 屯留县|