JS滑动门效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS滑动门效果相关的知识,希望对你有一定的参考价值。

效果图:

技术分享

 

思路:通过每次鼠标移动至目标上使所有图片重置为初始样式再向左移动目标及其左侧每个图片隐藏部分距离即实现。

 

html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

CSS:

    <style>
        #box{border:1px gray solid; margin: 0 auto; position:relative; overflow:hidden;}
        img{width:100px; float:left; position:absolute; left:0;}
    </style>

JS:

    <script type="text/javascript">
        onload = function(){
        var box = document.getElementById(‘box‘);
        var imgs = box.getElementsByTagName(‘img‘);
        var imgw = imgs[0].offsetWidth;
        var translate = imgs[0].offsetWidth * 0.8;
        var translate2 = imgs[0].offsetWidth * 0.2;
        box.style.width = imgs[0].offsetWidth + translate * (imgs.length-1) + ‘px‘;
        box.style.height = imgs[0].offsetHeight + ‘px‘;
        var reset = function(){for(var i=1,l=imgs.length;i<l;i++){       //重置为开始的布局
            imgs[i].style.left = imgw + (i - 1) * translate + ‘px‘;
        }}
        reset();
        for(var i=0,l=imgs.length;i<l;i++){
            (function(i){
                imgs[i].onmouseover = function(){                         
                    if(this.getAttribute(‘offset‘) == ‘active‘){return;}                              //当移动鼠标至目标元素时重置布局并重新从目标位置左侧内容左移
                    reset();    
                    for(var j=1;j<=i;j++){
                        imgs[j].style.left = parseInt(imgs[j].style.left,10) - translate2 + ‘px‘;
                    }
                    for(var k=0;k<imgs.length;k++){
                        imgs[k].setAttribute(‘offset‘,‘off‘);
                    }
                    this.setAttribute(‘offset‘,‘active‘);
                };
            })(i);
        }
        }
    </script>
    <body>
        <div id="box">
            <img src="img/1.jpg" alt="水云姬" title="不良人女帝"/>
            <img src="img/2.jpg" alt="李星云" title="不良人男主"/>
            <img src="img/3.jpg" alt="苗疆少女" title="不良人后宫"/>
            <img src="img/4.jpg" alt="张子凡" title="不良人男二"/>
            <img src="img/5.jpg" alt="叶林轩" title="不良人女二"/>
        </div>
    </body>
</html>

 

以上是关于JS滑动门效果的主要内容,如果未能解决你的问题,请参考以下文章

单纯使用CSS能实现滑动门效果?

js实现简单的滑动门和tab选项卡

jquery tab 切换代码 滑动门

移动端的一个js效果:手滑动向上向下滚动li标签

js移动div怎么做出滑动的效果?

js scrollIntoView 滑动问题