js实现滑动门效果

滑动门效果:
初始
第三道门打开

原理:

一共四道门,初始情况下,第一道门打开,其他三道门关闭,如第一个图所示。
假设图片的宽度是120px,其他三道门露出的宽度是80px,
初始状态下,
第二道门左边的距离是120px,
第三道门左边的距离是200px,
第四道门左边的距离是280px。
当第二道门打开时,
第二道门左边的距离是80px,为(120-40)px
第三道和第四道门左边的距离不变。
当第三道门打开时,
第二道门左边的距离是80px,
第三道门左边的距离是160px。(200-40)px
第四道门不变

这里写图片描述

因此每道门打开,是图片的宽度减去露出的宽度,就是需要向左移动的距离。第三道门打开,第二道门需要先做移动,然后第三道门移动。每道门移动的距离都是图片的宽度减去露出来的宽度。

程序:

<script type="text/javascript">
    window.onload = function() {
        var container = document.getElementById("container");
        var imgs = container.getElementsByTagName("img");//获取图像
        var imgWidth = imgs[0].offsetWidth;//图片的宽度
        var exposeWidth = 200;//露出的宽度
        var containerWidth = imgWidth + exposeWidth * (imgs.length - 1); //外部盒子的总宽度
        container.style.width = containerWidth + "px";

        function Initial() {
            for(var i = 1; i < imgs.length; i++) {
                imgs[i].style.left = imgWidth + exposeWidth * (i - 1) + "px";
            }
        }
        Initial();        
        var translateWidth = imgWidth - exposeWidth;//移动的距离
        for(var i = 0; i < imgs.length; i++) {
            (function(i) {
                imgs[i].onmouseover = function() {
                    Initial(); //鼠标经过图片时,首先设置到初始状态
                    for (var j=1;j<=i;j++) {   //之前的图片都移动相同的距离
                        imgs[j].style.left=parseInt(imgs[j].style.left)-translateWidth+"px";
                    }
                }
            })(i);
        }

    }
</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值