茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JS模擬簡易滾動條效果代碼(附demo源碼)
    來源:易賢網(wǎng) 閱讀:1313 次 日期:2016-07-08 15:16:41
    溫馨提示:易賢網(wǎng)小編為您整理了“JS模擬簡易滾動條效果代碼(附demo源碼)”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了JS模擬簡易滾動條效果代碼,可模擬出滾動條拖動顯示的效果,涉及JavaScript鼠標(biāo)事件的響應(yīng)及頁面元素運(yùn)算的相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下

    本文實(shí)例講述了JS模擬簡易滾動條效果的方法。分享給大家供大家參考,具體如下:

    使用Js模擬滾動條。簡易模式,類似手機(jī)上常見的滾動條。

    效果如下:

    名單

    Js代碼如下:

    var scrollMoveObj = null, scrollPageY = 0, scrollY = 0;

    var scrollDivList = new Array();

    // obj需要添加滾動條的對象 w滾動條寬度 className滾動條樣式名稱

    // obj元素 必須指定高度,并設(shè)置overflow:hidden;

    // 如要兼容IE6 必須給obj元素 指定 overflow:hidden; 

    function jsScroll(obj, w, className)

    {

      if(typeof(obj) == 'string')  {

        obj = document.getElementById(obj);

      }

      //當(dāng)內(nèi)容未超出現(xiàn)在高度時,不添加滾動條  

      if(!obj || obj.scrollHeight <= obj.clientHeight || obj.clientHeight == 0) {

        return;

      }

      obj.scrollBarWidth = w||6;

      obj.style.overflow = 'hidden';

      obj.scrollBar = document.createElement('div');

      document.body.appendChild(obj.scrollBar);

      obj.scrollBarIndex = document.createElement('div');

      obj.scrollBar.appendChild(obj.scrollBarIndex);

      obj.scrollBar.style.position = 'absolute';

      obj.scrollBarIndex.style.position = 'absolute';

      obj.scrollBar.className = className || '';

      if(!className) {

        obj.scrollBar.style.backgroundColor = '#ddd';

        obj.scrollBarIndex.style.backgroundColor = '#aaa';

      }

      scrollDivList.push(obj);

      scrollResetSize(obj);

      //使用鼠標(biāo)滾輪滾動

      obj.scrollBar.scrollDiv = obj;

      obj.scrollBarIndex.scrollDiv = obj;

      obj.onmousewheel = scrollMove;

      obj.scrollBar.onmousewheel = scrollMove;

      obj.scrollBarIndex.onmousewheel = scrollMove;

      //拖動滾動條滾動

      obj.scrollBarIndex.onmousedown = function(evt){

        evt = evt || event;

        scrollPageY = evt.clientY;

        scrollY = this.scrollDiv.scrollTop;

        isScrollMove = true;

        document.body.onselectstart = function(){return false};

        scrollMoveObj = this.scrollDiv;

        if(this.scrollDiv.scrollBar.className == '') {

          this.scrollDiv.scrollBarIndex.style.backgroundColor = '#888';

        }

        return false;

      }

    }

    //當(dāng)頁面大小發(fā)生變化時,重新計算滾動條位置

    window.onresize = function(){

      for(var i=0; i<scrollDivList.length; i++) {

        scrollResetSize(scrollDivList[i]);

      }

    }

    //計算滾動條位置

    function scrollResetSize(o) {

      if(o.scrollHeight <= o.clientHeight) {

        o.scrollTop = 0;

        o.scrollBar.style.display = 'none';

      } else {

        o.scrollBar.style.display = 'block';

      }

      var x=0, y=0;

      var p = o;

      while(p) {

        x += p.offsetLeft;

        y += p.offsetTop;

        p = p.offsetParent;

      }

      var borderTop = parseInt(o.style.borderTopWidth||0);

      var borderBottom = parseInt(o.style.borderBottomWidth||0);

      o.scrollBar.style.width = o.scrollBarWidth + 'px';

      o.scrollBar.style.height = o.clientHeight + 'px';

      o.scrollBar.style.top = y + borderTop + 'px';

      o.scrollBar.style.left = x + o.offsetWidth - o.scrollBarWidth + 'px';

      o.scrollBarIndex.style.width = o.scrollBarWidth + 'px';

      var h = o.clientHeight - (o.scrollHeight - o.clientHeight);

      //當(dāng)滾動條滑塊最小20個像素

      if(h < 20) {

        h = 20;

      }

      o.scrollBarHeight = h;

      o.scrollBarIndex.style.height = h + 'px';

      o.scrollBarIndex.style.left = '0px';

      setScrollPosition(o);

    }

    function setScrollPosition(o) {

      o.scrollBarIndex.style.top = (o.clientHeight - o.scrollBarHeight) * o.scrollTop / (o.scrollHeight - o.clientHeight) + 'px';

    }

    document.documentElement.onmousemove = function(evt){

      if(!scrollMoveObj)return;

      evt = evt || event;

      var per = (scrollMoveObj.scrollHeight - scrollMoveObj.clientHeight) / (scrollMoveObj.clientHeight - scrollMoveObj.scrollBarHeight)

      scrollMoveObj.scrollTop = scrollY - (scrollPageY - evt.clientY) * per;

      setScrollPosition(scrollMoveObj);

    }

    document.documentElement.onmouseup = function(evt){

      if(!scrollMoveObj)return;

      if(scrollMoveObj.scrollBar.className == '') {

        scrollMoveObj.scrollBarIndex.style.backgroundColor = '#aaa';

      }

      scrollMoveObj = null;

      document.body.onselectstart = function(){return true};

    }

    // 鼠標(biāo)滾輪滾動

    function scrollMove(evt){

      var div = this.scrollDiv || this;

      if(div.scrollHeight <= div.clientHeight) return true;

      evt = evt || event;

      var step = 20;

      if(evt.wheelDelta < 0) {

        if(div.scrollTop >= (div.scrollHeight - div.clientHeight)) return true;

        div.scrollTop += step;

      } else {

        if(div.scrollTop == 0) return true;

        div.scrollTop -= step;

      }

      setScrollPosition(div);

      return false;

    }

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

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JS模擬簡易滾動條效果代碼(附demo源碼)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)