列表按設(shè)定條數(shù)定時(shí)滾動(dòng)

/*

  • 列表定時(shí)滾動(dòng)效果(javascript)
  • @listId :滾動(dòng)列表ID
  • @listTagName :滾動(dòng)元素
  • @scrollNum :設(shè)置滾動(dòng)元素?cái)?shù)量
  • @speed : 滾動(dòng)速度
    */
  function fnScrollList() {
    this.init.apply(this, arguments);
  }

  fnScrollList.prototype = {
    init: function (listId, TagName, scrollNum, speed) {
      var _this = this;
      this.oList = this.$$(listId);
      this.scrollTimer = null;
      this.speed = speed || 1000;
      this.scrollNum = scrollNum || 0;
      this.TagName = TagName;
      this.distance = this.oList.getElementsByTagName(TagName)[0].offsetHeight * this.scrollNum;//列表移動(dòng)距離
      this.oList.style.marginTop = 0 + "px";

      this.oList.onmouseover = function () {
        _this.pause();
      }
      this.oList.onmouseout = function () {
        _this.scrollTimer = setTimeout(function () {
          _this.play();
        }, _this.speed);
      }
      this.play();
    },
    play: function () {
      var _this = this;
      var options = {'marginTop': '-' + _this.distance};
      _this.anim(_this.oList, options, function () { //回調(diào)函數(shù),移動(dòng)列表元素
        for (var i = 0, j = 0; i < _this.scrollNum; i++) {
          var node = _this.oList.getElementsByTagName(_this.TagName)[j];
          if (_this.TagName == "tr") {
            _this.oList.getElementsByTagName('tbody')[0].appendChild(node);
          } else {
            _this.oList.appendChild(node);
          }
        }
        _this.oList.style.marginTop = "0px";
      });

      _this.scrollTimer = setTimeout(function () {
        _this.play(_this.distance);
      }, _this.speed);
    },
    pause: function () {
      clearTimeout(this.scrollTimer);
    },
    //動(dòng)畫(huà)函數(shù)
    anim: function (oElement, oAttr, fnCallback) {
      var _this = this;
      clearInterval(oElement.timer);
      oElement.timer = setInterval(function () {
        var bStop = true;
        for (var property in oAttr) {
          var iCur = parseFloat(_this.css(oElement, property)); //獲取當(dāng)前位置屬性值
          var iSpeed = (oAttr[property] - iCur) / 5; //移動(dòng)進(jìn)度
          iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
          if (iCur != oAttr[property]) { //如果當(dāng)前數(shù)值不等于目標(biāo)數(shù)值,則數(shù)值遞增
            bStop = false;
            _this.css(oElement, property, iCur + iSpeed);
          }
        }
        if (bStop) {
          clearInterval(oElement.timer);
          fnCallback && fnCallback.apply(_this, arguments);
        }
      }, 50);
    },
    //處理樣式函數(shù)
    css: function (oElement, attr, value) {
      if (arguments.length == 2) {
        return oElement.currentStyle ? oElement.currentStyle[attr] : getComputedStyle(oElement, null)[attr];
      } else if (arguments.length == 3) {
        switch (attr) {
          case "top":
          case "left":
          case "marginTop":
            oElement.style[attr] = value + "px";
            break;
          default:
            oElement.style[attr] = value;
            break;
        }
      }
    },
    $$: function (o) {
      if (o) {
        return document.getElementById(o);
      }
    }
  };

  var list = new fnScrollList('list', 'li', 0, 3000);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,874評(píng)論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,826評(píng)論 1 45
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,167評(píng)論 1 92
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,358評(píng)論 0 17
  • 第一次吃全是綠色的減肥餐,看的自己眼睛都綠了,沒(méi)記錯(cuò)里面有生菜,胡蘿卜,平菇,西藍(lán)花,尖椒,水煮雞胸肉……我一...
    菲了個(gè)菲閱讀 163評(píng)論 0 0

友情鏈接更多精彩內(nèi)容