信息发布软件,b2b软件,广告发布软件

标题: 您有可能没有见过这么美的JavaScript 百叶窗代码了吧 [打印本页]

作者: 群发软件    时间: 2017-6-3 21:22
标题: 您有可能没有见过这么美的JavaScript 百叶窗代码了吧
本帖最后由 群发软件 于 2017-6-3 21:24 编辑

如图所示,空心格子就好比是每个li,给它设定相对定位属性,设置overflow:hidden;黑块为li子元素,高度为li的2倍,设置absolute属性,我们正是要改变它的top值从而获得变化!(右上角多余块与本图无关)
您有可能没有见过这么美的JavaScript 百叶窗代码了吧 b2b软件 您有可能没有见过这么美的JavaScript 百叶窗代码了吧 b2b软件
布局分析:
注意top值得变化!默认top=0时候,显示的“一楼上铺”,当top=-40px时候,li的子元素 上移40px,这时候显示的内容就为“一楼下铺”注意p元素的包裹层div
您有可能没有见过这么美的JavaScript 百叶窗代码了吧 b2b软件
您有可能没有见过这么美的JavaScript 百叶窗代码了吧 b2b软件 您有可能没有见过这么美的JavaScript 百叶窗代码了吧 b2b软件
JS分析:
1、要开多个定时器来达到效果
2、执行相反方向
3、执行多组运动
4、累加产生错落感
5、产生时间间隔的动画
JS代码如下:
<script>  window.onload = function(){   var oUl = document.getElementById('ul1');   var oUl2 = document.getElementById('ul2');   toShow(oUl);   //每四秒执行一次   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.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>
<title>JS实现百叶窗</title>
<!--原理:
首先,主要是根据li里的div是保存每一行所有要变化的信息,定时改变div的高度,溢出部分隐藏来实现。
通过2个setInterval来实现,外层setInterval用来控制多长时间改变一次内容,里层setInterval用来控制如何改变。-->
<style>
*{ margin:0; padding:0;}
li{ list-style:none;}
#ul1,#ul2{ width:300px; height:auto; float:left; border-top:1px #000000 solid; margin:20px;}
li{ width:100%; height:30px; overflow:hidden; position:relative; border-bottom:1px #333333 dashed; line-height:30px;}
li div{ position:absolute; top:-30px;}
li div p { height:30px;}
</style>
<script type="text/javascript" src="move.js"></script>
<script>
window.onload = function(){
    var oUl = document.getElementById('ul1');
    var oUl2 = document.getElementById('ul2');
   
  //先对左侧UL标签实行百叶窗效果;
    toShow(oUl);
//两秒延迟后,对右侧UL标签实行百叶窗效果;
    setTimeout(function(){
        toShow(oUl2);
    },2000);  ࡣ
   
    //实现百叶窗函数
    function toShow(obj){
        var aDiv = obj.getElementsByTagName('div');
        var iNow = 0;//共有的内容行数;
        var timer = null;//setInterval的返回值,用于clearInterval;
        var bBtn = true;
        //UL定时每4秒变换1次
        setInterval(function(){
        
            toChange();
        
        },4000);
        
        //UL变换1次
        function toChange(){
            //通过setInterval来对每一个li依次改变
            timer = setInterval(function(){
            //如果UL的每个li都变换过了,则停止,等待外层toShow()再次调用toChange()函数;
                if(iNow==aDiv.length){
                    clearInterval(timer);
                    iNow = 0;
                    bBtn = !bBtn;//用于从上往下信息滚完了,再从下往上回滚;
                }
                else if(bBtn){
                    startMove(aDiv[iNow],{top:0});
                    iNow++;   //为了下次定时执行时变为操作下一条内容的变换
                }
                else{
                    startMove(aDiv[iNow],{top:-30});
                    iNow++;
                }
                    
            },100);
            
        }
        
    }
   
};
</script>


作者: zzjiuzi008    时间: 2017-6-7 20:53
太久1个半月了,2个客服小哥人都不错,态度也很好应该给好评,只是设计网页的设计感太一般,应该中评。
作者: zzjiuzi008    时间: 2017-6-10 12:29
,不是我说的实在太感谢店主了。。。我正为这个头痛呢~!
作者: xiaozhu168    时间: 2017-6-11 07:31
很满意,非常有效率,交货很及时,很满意,以后还会再来。
作者: asz111    时间: 2017-6-12 06:04
很好,很有耐心,修改了几次,都很配合
作者: 脱颖而出    时间: 2017-6-13 04:12
值,值得一买,不错不错不错!!!
作者: 123    时间: 2017-6-14 05:07
序员哥哥好有耐心!点赞!
作者: ebxly    时间: 2017-6-19 09:06
雷,雷雷雷,亲很好,买了好多模板,不痛苦我就换模板
作者: a5206662    时间: 2017-6-20 12:44
喜欢,质量好,跟卖家描述的一样,卖家态度好,买家很满意,
作者: x201323    时间: 2017-6-22 19:07
真正的物超所值!
作者: yerface    时间: 2017-6-22 22:53
非常给力,服务也好,谢谢老板
作者: ebxly    时间: 2017-6-23 06:19
有竞争才有进步嘛
作者: xbaobeit    时间: 2017-6-27 00:14
别7号技术小哥服务很好!
作者: 脱颖而出    时间: 2017-7-2 07:48
及时做出评价,系统默认好评!




欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) Powered by Discuz! X3.2