亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

百葉窗大家都見(jiàn)過(guò)吧!如圖:

原理:

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

布局分析:

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

JS分析:
1、要開(kāi)多個(gè)定時(shí)器來(lái)達(dá)到效果
2、執(zhí)行相反方向
3、執(zhí)行多組運(yùn)動(dòng)
4、累加產(chǎn)生錯(cuò)落感
5、產(chǎn)生時(shí)間間隔的動(dòng)畫
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);     
    }    
   }   
  };
       //運(yùn)動(dòng)框架
  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實(shí)現(xiàn)百葉窗效果
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)實(shí)現(xiàn)js百葉窗效果有所幫助。

相關(guān)文章

  • javascript如何實(shí)現(xiàn)暫停功能

    javascript如何實(shí)現(xiàn)暫停功能

    這篇文章主要介紹了javascript如何實(shí)現(xiàn)暫停功能,,Javascript本身沒(méi)有暫停功能,同時(shí)vbscript也不能使用doEvents,故編寫此函數(shù)實(shí)現(xiàn)此功能, 需要的朋友可以參考下
    2015-11-11
  • 用CSS+JS實(shí)現(xiàn)的進(jìn)度條效果效果

    用CSS+JS實(shí)現(xiàn)的進(jìn)度條效果效果

    用CSS+JS實(shí)現(xiàn)的進(jìn)度條效果效果...
    2007-06-06
  • js實(shí)現(xiàn)櫥窗展示效果

    js實(shí)現(xiàn)櫥窗展示效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)櫥窗展示效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • js 獲取input點(diǎn)選按鈕的值的方法

    js 獲取input點(diǎn)選按鈕的值的方法

    這篇文章主要介紹了js 如何獲取input點(diǎn)選按鈕的值,需要的朋友可以參考下
    2014-04-04
  • JavaScript setTimeout()基本用法有哪些

    JavaScript setTimeout()基本用法有哪些

    這篇文章主要介紹了JavaScript setTimeout()基本用法有哪些,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • JS實(shí)現(xiàn)單例模式的6種方案匯總

    JS實(shí)現(xiàn)單例模式的6種方案匯總

    單例模式的定義是保證一個(gè)類僅有一個(gè)實(shí)例,下面這篇文章主要給大家介紹了關(guān)于JS實(shí)現(xiàn)單例模式的6種方案,需要的朋友可以參考下
    2021-05-05
  • javascript獲取重復(fù)次數(shù)最多的字符

    javascript獲取重復(fù)次數(shù)最多的字符

    本文給大家講述的是使用javascript實(shí)現(xiàn)獲取重復(fù)次數(shù)最多的字符,代碼很簡(jiǎn)單,有需要的小伙伴可以參考下。
    2015-07-07
  • JS塊級(jí)作用域和私有變量實(shí)例分析

    JS塊級(jí)作用域和私有變量實(shí)例分析

    這篇文章主要介紹了JS塊級(jí)作用域和私有變量,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascript塊級(jí)作用域和私有變量相關(guān)概念、原理、操作技巧,需要的朋友可以參考下
    2019-05-05
  • js實(shí)現(xiàn)網(wǎng)頁(yè)音樂(lè)播放器

    js實(shí)現(xiàn)網(wǎng)頁(yè)音樂(lè)播放器

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)網(wǎng)頁(yè)音樂(lè)播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • mvc中form表單提交的三種方式(推薦)

    mvc中form表單提交的三種方式(推薦)

    本文給大家分享mvc中form表單提交的三種方式,分別是submit 按鈕 提交方式,$("#dataform").ajaxSubmit() 提交方式,post 提交方式,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-08-08

最新評(píng)論