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

原生js實現(xiàn)百葉窗效果及原理介紹

 更新時間:2016年04月12日 14:43:15   作者:白超華  
這篇文章主要介紹了原生javascript實現(xiàn)百葉窗效果的方法及原理介紹,感興趣的小伙伴們可以參考一下

百葉窗大家都見過吧!如圖:

原理:

如圖所示,空心格子就好比是每個li,給它設(shè)定相對定位屬性,設(shè)置overflow:hidden;黑塊為li子元素,高度為li的2倍,設(shè)置absolute屬性,我們正是要改變它的top值從而獲得變化!(右上角多余塊與本圖無關(guān))

布局分析:

注意top值得變化!默認top=0時候,顯示的“一樓上鋪”,當top=-40px時候,li的子元素 上移40px,這時候顯示的內(nèi)容就為“一樓下鋪”注意p元素的包裹層div

JS分析:
1、要開多個定時器來達到效果
2、執(zhí)行相反方向
3、執(zhí)行多組運動
4、累加產(chǎn)生錯落感
5、產(chǎn)生時間間隔的動畫
JS代碼如下:

<script>
  window.onload = function(){
   var oUl = document.getElementById('ul1');
   var oUl2 = document.getElementById('ul2');

   toShow(oUl);
   //每四秒執(zhí)行一次
   setTimeout(function(){
    toShow(oUl2);     
   },4000); 
   function toShow(obj){
    var aDiv = obj.getElementsByTagName('div');
    var iNow = 0;
    var timer = null;
    var bBtn = true;

    setInterval(function(){   
     toChange(); 
    },2000);
    function toChange(){
     timer = setInterval(function(){
      if(iNow==aDiv.length){
       clearInterval(timer);
       iNow = 0;
       bBtn = !bBtn;
      }
      else if(bBtn){
       startMove(aDiv[iNow],{top:0},function(){
        var p = document.getElementsByClassName('p-2');
        for(var i=0; i<p.length;i++){
         p[i].style.background = 'red';
        }
       });
       iNow++;
      }
      else{
       startMove(aDiv[iNow],{top:-30});
       iNow++;
      }     
     },100);     
    }    
   }   
  };
       //運動框架
  function startMove(obj,json,endFn){ 
   clearInterval(obj.timer);  
   obj.timer = setInterval(function(){   
    var bBtn = true;   
    for(var attr in json){    
     var iCur = 0;   
      iCur = parseInt(getStyle(obj,attr)) || 0;
     var iSpeed = (json[attr] - iCur)/8;
      iSpeed = iSpeed >0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);

     if(iCur!=json[attr]){
      bBtn = false;
     }
     obj.style[attr] = iCur + iSpeed + 'px';    
    }   
    if(bBtn){
     clearInterval(obj.timer);
     if(endFn){
      endFn.call(obj);
     }
    }
   },30); 
  }
        //獲取非行間樣式
  function getStyle(obj,attr){
   if(obj.currentStyle){
    return obj.currentStyle[attr];
   }
   else{
    return getComputedStyle(obj,false)[attr];
   }
  }
 </script>

下載地址:js實現(xiàn)百葉窗效果
以上就是本文的全部內(nèi)容,希望對大家學習實現(xiàn)js百葉窗效果有所幫助。

相關(guān)文章

  • js前端實現(xiàn)圖片懶加載(lazyload)的兩種方式

    js前端實現(xiàn)圖片懶加載(lazyload)的兩種方式

    本篇文章主要介紹了js前端實現(xiàn)圖片懶加載(lazyload)的兩種方式 ,使用圖片懶加載可以提高網(wǎng)頁運行速度,有興趣的可以了解一下。
    2017-04-04
  • 微信小程序如何訪問公眾號文章

    微信小程序如何訪問公眾號文章

    這篇文章主要介紹了微信小程序如何訪問公眾號文章,隨著小程序不斷的發(fā)展,現(xiàn)在個人的小程序也開放了很多功能了,個人小程序直接打開公眾號鏈接。在群里看到的一款小程序,點擊可以直接閱讀文章了,需要的朋友可以參考下
    2019-07-07
  • Javascript函數(shù)式編程語言

    Javascript函數(shù)式編程語言

    JavaScript 是近年來非常受矚目的一門編程語言,它既支持面向?qū)ο缶幊?,也支持函?shù)式編程。本文專門介紹JavaScript函數(shù)式編程的特性。
    2015-10-10
  • 寫了幾個類,希望對大家有用。

    寫了幾個類,希望對大家有用。

    寫了幾個類,希望對大家有用。...
    2006-12-12
  • JS更改select內(nèi)option屬性的方法

    JS更改select內(nèi)option屬性的方法

    這篇文章主要介紹了JS更改select內(nèi)option屬性的方法,涉及JavaScript動態(tài)操作頁面select元素屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • js控制TR的顯示隱藏

    js控制TR的顯示隱藏

    在很多現(xiàn)實的場景中,有的文本框我們希望在選擇“是”的按鈕之后才出現(xiàn),這就需要js控制TR的隱藏和顯示,如何控制,本文為大家揭曉
    2016-03-03
  • js實現(xiàn)網(wǎng)頁換膚

    js實現(xiàn)網(wǎng)頁換膚

    這篇文章主要為大家詳細介紹了js實現(xiàn)網(wǎng)頁換膚功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Bootstrap精簡教程中秋大放送

    Bootstrap精簡教程中秋大放送

    Bootstrap精簡教程中秋大放送,這篇文章主要為大家分享了最基礎(chǔ)的Bootstrap學習教程,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JS中的JSON對象的定義和取值實現(xiàn)代碼

    JS中的JSON對象的定義和取值實現(xiàn)代碼

    這篇文章主要介紹了JS中的JSON對象的定義和取值實現(xiàn)代碼,也是json的入門知識,需要的朋友可以參考下
    2018-05-05
  • JS發(fā)起HTTP請求的多種方式總結(jié)

    JS發(fā)起HTTP請求的多種方式總結(jié)

    這篇文章主要為大家詳細介紹了JavaScript發(fā)起HTTP請求的多種方式,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11

最新評論

明水县| 红安县| 临朐县| 辛集市| 浮山县| 安龙县| 常熟市| 库尔勒市| 木兰县| 泊头市| 竹溪县| 巨野县| 鄂伦春自治旗| 闽清县| 杭锦后旗| 仁化县| 吴桥县| 舞阳县| 师宗县| 松溪县| 西青区| 同江市| 修文县| 天全县| 苗栗市| 光泽县| 定襄县| 沿河| 普陀区| 嘉定区| 海门市| 沙雅县| 西藏| 巍山| 顺义区| 洞头县| 英山县| 隆化县| 萨嘎县| 从化市| 商丘市|