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

原生JavaScript實(shí)現(xiàn)的無縫滾動功能詳解

 更新時(shí)間:2020年01月17日 11:05:32   作者:林飛的夢囈  
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)的無縫滾動功能,結(jié)合實(shí)例形式詳細(xì)分析了JavaScript無縫滾動具體實(shí)現(xiàn)步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了原生JavaScript實(shí)現(xiàn)的無縫滾動功能。分享給大家供大家參考,具體如下:

無縫輪播(原生JavaScript)

一:HTML部分:

<div class="box" id="box">
  <ul class="J_XSlide list">
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/1.jpg" alt="廣告一" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/2.jpg" alt="廣告一" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/3.jpg" alt="廣告二" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/4.jpg" alt="廣告三" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/5.jpg" alt="廣告四" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/6.jpg" alt="廣告五" /></a></li>
    <li class="J_tabContent"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="img/main/display/1.jpg" alt="廣告一" /></a></li>
  </ul>
  <div class="btn btnl"><</div>
  <div class="btn btnr">></div>
  <ul class="tabs">
    <li class="tab cur"></li>
    <li class="tab"></li>
    <li class="tab"></li>
    <li class="tab"></li>
    <li class="tab"></li>
    <li class="tab"></li>
  </ul>
</div>

二、CSS部分

<style>
  * {
    margin: 0;
    padding: 0;
  }
  ul li {
    list-style: none;
  }
  .clearfix {
    zoom: 1;
  }
  .clearfix:after {
    display: block;
    clear: both;
    content: '';
  }
  .box {
    width: 1226px;
    height: 460px;
    overflow: hidden;
    position: relative;
    margin: 20px auto 0;
  }
  .box .list {
    position: relative;
    left: 0;
    height: 460px;
  }
  .box .list li img,
  .box .list li {
    float: left;
    width: 1226px;
    height: 460px;
  }
  .box .tabs {
    position: absolute;
    right: 5px;
    bottom: 5px;
    z-index: 99999;
   }
  .box .tabs .tab {
    float: left;
    width: 6px;
    height: 6px;
    border: 2px solid #f47500;
    border-radius: 100%;
    margin-right: 10px;
    cursor: pointer;
    background: #fcf2cf;
    font-family: arial;
  }
  .box .tabs .tab:hover,
  .box .tabs .cur {
    border: 2px solid #1227e4;
    background: #26c776;
  }
  .box .btn {
    position: absolute;
    width: 30px;
    height: 70px;
    top: 50%;
    margin-top: -35px;
    z-index: 20;
    background-color: rgba(0, 0, 0, 0.2);
    font-size: 30px;
    color: #fff;
    text-align: center;
    line-height: 70px;
  }
  .box:hover .btn {
    background-color: rgba(0, 0, 0, 0.6);
  }
  .box .btnl {
    left: 10px;
  }
  .box .btnr {
    right: 10px;
  }
</style>

三、JavaScript部分

3.1 base.js

  var GLOBAL = {};
  // 定義命名空間函數(shù)
  GLOBAL.namespace = function(str) {
    var arr = str.split("."),
      o = GLOBAL;
    for(i = (arr[0] === "GLOBAL") ? 1 : 0; i < arr.length; i++) {
      o[arr[i]] = o[arr[i]] || {};
      o = o[arr[i]];
    }
  };
  // Dom命名空間
  GLOBAL.namespace("Dom");
  // 獲取className 第一個參數(shù)必須的(class名)、第二個參數(shù)父容器,缺省為body節(jié)點(diǎn)、第三個參數(shù)為DOM節(jié)點(diǎn)標(biāo)簽名
  GLOBAL.Dom.getElementsByClassName = function(str, root, tag) {
    if(root) {
      root = typeof root === 'string' ? document.getElementById(root) : root;
    }
    else {
      root = document.body;
    }
    tag = tag || '*';
    var eles = root.getElementsByTagName(tag), // 獲取父容器下所有標(biāo)簽
      arr = [];
    for(var i = 0, n = eles.length; i < n; i++) {
      for(var j = 0, k = eles[i].className.split(' '), l = k.length; j < l; j++) {
        if(k[j] == str) {
          arr.push(eles[i]);
          break;
        }
      }
    }
    return arr;
  };
  // Event命名空間
  GLOBAL.namespace('Event');
  // 添加事件(或者說監(jiān)聽事件)
  GLOBAL.Event.addHandler = function(node, eventType, handler) {
    node = typeof node === 'string' ? document.getElementById(node) : node;
    if(node.addEventListener) {
      node.addEventListener(eventType, handler, false);
    }
    else if(node.attachEvent) {
      node.attachEvent('on' + eventType, handler);
    }
    else {
      node['on' + eventType] = handler;
    }
  };

3.2 完美運(yùn)動框架部分代碼:

function getStyle(obj, attr) {
  return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr];
}
function startMove(obj, json, fn) {
  clearInterval(obj.timer);
  obj.timer = setInterval(function() {
    var bStop = true; //這一次運(yùn)動結(jié)束——————所有值都到達(dá)了
    for(var attr in json) {
      //1.取當(dāng)前的值
      var iCur = 0;
      if(attr == 'opacity') {
        var iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100);
      }
      else {
        var iCur = parseInt(getStyle(obj, attr));
      }
      //2.計(jì)算速度
      var iSpeed = (json[attr] - iCur)/6;
      iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
      //3.檢測停止
      if(iCur != json[attr]) {
        bStop = false;
      }
      if(attr == 'opacity') {
        obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed) +')';
        obj.style.opacity = (iCur + iSpeed)/100;
      }
      else {
        obj.style[attr] = iCur + iSpeed + 'px';
      }
    }
    if(bStop) {
      clearInterval(obj.timer);
      if(fn) {
        fn();
      }
    }
  }, 30);
}

3.3 page.js(實(shí)現(xiàn)功能部分)

  (function() {
    var oBox = document.getElementById('box');
    var oXSlide = GLOBAL.Dom.getElementsByClassName('J_XSlide', oBox)[0];
    var li = oXSlide.getElementsByTagName('li');
    var liTabs = GLOBAL.Dom.getElementsByClassName('tabs', oBox)[0].getElementsByTagName('li');
    var iNow = 0;
    function tab() {
      var timer = null;
      var playTime = 3000;
      var btn = GLOBAL.Dom.getElementsByClassName('btn', oBox);
      oXSlide.style.width = li.length * li[0].offsetWidth + 'px';
      for(var i = 0, len = liTabs.length; i < len; i++) {
        liTabs[i].index = i;
        GLOBAL.Event.addHandler(liTabs[i], 'mouseover', function() {
          iNow = this.index;
          showItem(iNow);
        });
      }
      GLOBAL.Event.addHandler(btn[0], 'click', moveLeft);
      GLOBAL.Event.addHandler(btn[1], 'click', moveRight);
      timer = setInterval(autoPlay, playTime);
      function autoPlay() {
        moveRight();
      }
      GLOBAL.Event.addHandler(oBox, 'mouseover', function() {
        clearInterval(timer);
      });
      GLOBAL.Event.addHandler(oBox, 'mouseout', function() {
        timer = setInterval(autoPlay, playTime);
      });
    }
    // 選項(xiàng)卡
    function showItem(n) {
      for(var i = 0, len = liTabs.length; i < len; i++) {
        liTabs[i].className = 'tab';
      }
      if(n == liTabs.length) {
        liTabs[0].className = 'tab cur';
      }
      else {
        liTabs[n].className = 'tab cur';
      }
      startMove(oXSlide, {'left': -n * li[0].offsetWidth});
    }
    function moveLeft() {
      iNow--;
      if(iNow == -1) {
        oXSlide.style.left = -liTabs.length * li[0].offsetWidth + 'px';
        iNow = liTabs.length - 1;
      }
      showItem(iNow);
    }
    function moveRight() {
      iNow++;
      if(iNow == li.length) {
        oXSlide.style.left = 0;
        iNow = 1;
      }
      showItem(iNow);
    }
    tab();
  })();

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js添加刪除行和雙擊變文本框的腳本

    js添加刪除行和雙擊變文本框的腳本

    發(fā)現(xiàn)我JS真的還有很多要學(xué),下面只是我的練習(xí)作品,代碼很多是網(wǎng)上的。
    2008-07-07
  • Javascript 嚴(yán)格模式use strict詳解

    Javascript 嚴(yán)格模式use strict詳解

    嚴(yán)格模式:由ECMA-262規(guī)范定義的JavaScript標(biāo)準(zhǔn),對javascrip的限制更強(qiáng)。這篇文章主要介紹了Javascript 嚴(yán)格模式use strict詳解 ,需要的朋友可以參考下
    2017-09-09
  • 微信小程序canvas實(shí)現(xiàn)簽名功能

    微信小程序canvas實(shí)現(xiàn)簽名功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序canvas實(shí)現(xiàn)簽名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • js中DOM事件綁定分析

    js中DOM事件綁定分析

    在這篇文章中小編給大家整理了關(guān)于JS中DOM事件綁定的相關(guān)知識點(diǎn),有興趣的朋友趕快學(xué)習(xí)參考下。
    2018-03-03
  • JSON字符串轉(zhuǎn)JSON對象

    JSON字符串轉(zhuǎn)JSON對象

    本文給大家分享的是如何使用javascript實(shí)現(xiàn)JSON字符串轉(zhuǎn)JSON對象的方法,這里記錄下來,有需要的小伙伴可以參考下。
    2015-07-07
  • 淺談javascript函數(shù)劫持[轉(zhuǎn)自xfocus]

    淺談javascript函數(shù)劫持[轉(zhuǎn)自xfocus]

    javascript函數(shù)劫持,也就是老外提到的javascript hijacking技術(shù)。最早還是和劍心同學(xué)討論問題時(shí)偶然看到的一段代碼
    2008-02-02
  • 基于JS實(shí)現(xiàn)彈性漂浮廣告的示例代碼

    基于JS實(shí)現(xiàn)彈性漂浮廣告的示例代碼

    這篇文章主要介紹了利用JS實(shí)現(xiàn)彈性漂浮效果的廣告代碼,文中的示例代碼講解詳細(xì),具有一定參考借鑒價(jià)值,感興趣的同學(xué)可以跟隨小編一起試一試
    2022-01-01
  • 基于redis的小程序登錄實(shí)現(xiàn)方法流程分析

    基于redis的小程序登錄實(shí)現(xiàn)方法流程分析

    這篇文章主要介紹了基于redis的小程序登錄實(shí)現(xiàn)流程分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 基于webpack 實(shí)用配置方法總結(jié)

    基于webpack 實(shí)用配置方法總結(jié)

    下面小編就為大家?guī)硪黄趙ebpack 實(shí)用配置方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 前端在線預(yù)覽PDF文件三種實(shí)現(xiàn)方式(兼容移動端)

    前端在線預(yù)覽PDF文件三種實(shí)現(xiàn)方式(兼容移動端)

    這篇文章主要介紹了前端在線預(yù)覽PDF文件三種實(shí)現(xiàn)方式的相關(guān)資料,分別是使用微軟在線預(yù)覽地址、直接使用window.open打開文檔鏈接以及使用PDF.js,PDF.js方法穩(wěn)定,適用于大多數(shù)文件,每種方法都給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2025-02-02

最新評論

乐至县| 阳原县| 台安县| 宁海县| 吉安市| 嘉义县| 合山市| 霍山县| 天津市| 柳江县| 曲阳县| 庐江县| 安龙县| 朝阳区| 将乐县| 郎溪县| 三亚市| 独山县| 勃利县| 朝阳市| 永春县| 安龙县| 揭西县| 唐山市| 玛沁县| 北辰区| 区。| 东丽区| 阿拉尔市| 淮安市| 黄山市| 五台县| 大名县| 新津县| 辽宁省| 阿拉善右旗| 临清市| 黔南| 壤塘县| 依安县| 荣昌县|