Js+CSS3实现手风琴效果

Js+CSS3实现手风琴效果

效果截图:

Js+CSS3实现手风琴效果

HTML代码:

    <div id="container">
        <img src="images/photo01.jpg" alt="">
        <img src="images/photo02.jpg" alt="">
        <img src="images/photo03.jpg" alt="">
        <img src="images/photo04.jpg" alt="">
    </div>

CSS样式:

*{
    margin: 0; padding: 0;
}
#container{
    margin: 30px auto; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; height: 420px; overflow: hidden;
    font-size: 0; position: relative;
}
#container img{
    display: block;width: 420px; height: 420px; position: absolute; left: 0; top: 0; border-top: 1px solid #ccc; 
    border-left: 1px solid #ccc; 
    -webkit-transition: all 1s;
    -moz-transition: all 1s;
    -ms-transition: all 1s;
    -o-transition: all 1s;
}

JS代码:

window.onload=function(){
    //获取图片容器
    var oBox=document.getElementById('container');

    //获取图片
    var aImgs=document.getElementsByTagName('img');

    //获取单张图片宽度
    var oImgWidth=aImgs[0].offsetWidth;

    //定义显露宽度
    var oInitWidth=160;

    //设置图片容器宽度
    oBox.style.width=oImgWidth + oInitWidth*(aImgs.length-1)+'px';

    //初始化图片位置
    function initImgPos(){
        for(var i = 1; i < aImgs.length; i++){ //由于第一张图片不需要设置,i从1开始
            aImgs[i].style.left=oImgWidth + oInitWidth*(i-1) + 'px';
        }        
    }
    //初始化执行一次
    initImgPos()

    //定义鼠标滑过每个图片应移动的距离
    var translate=oImgWidth - oInitWidth;

    //鼠标滑动效果
    for (var i = 0; i < aImgs.length; i++) {
        // 使用立即执行函数,获得不同i的值
        (function(i){
            aImgs[i].onmouseover=function(){
                // 复位
                initImgPos();

                //重新计算位置
                for(var j = 1; j <= i; j++){
                    aImgs[j].style.left=parseInt(aImgs[j].style.left,10) - translate  + 'px';
                }
            }
        })(i)
    }

}

笔记来源:慕课网:DOM探索之基础详解篇