效果图

 通过鼠标移动实现图片滑动门效果

代码

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>sliding doors</title>
    <link rel="stylesheet" href="styles/reset.css">
    <link rel="stylesheet" href="styles/slidingdoors.css">
</head>
<body>
    <div id="container">
        <img src="images/door1.png" alt="1080P神器" title="1080P神器">
        <img src="images/door2.png" alt="5.5寸四核" title="5.5寸四核">
        <img src="images/door3.png" alt="四核5寸" title="四核5寸">
        <img src="images/door4.png" alt="5.7寸机皇" title="5.7寸机皇">
    </div>

    <script src="scripts/slidingdoors.js"></script>
</body>
</html>

css:

#container {
    height: 477px;
    margin: 0 auto;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    overflow: hidden;
    position: relative;
}

#container img {
    position: absolute;
    display: block;
    left: 0;
    border-left: 1px solid #ccc;
}

JavaScript:

// 定义页面加载完毕  onload会等到所有页面元素加载完毕以及页面资源加载完毕
window.onload = function() {
    // 获得容器对象
    var box = document.getElementById("container");

    // 获得图片NodeList对象集合
    var imgs = box.getElementsByTagName("img");

    // 单张图片的宽度
    var imgWidth = imgs[0].offsetWidth;

    // 设置掩藏门体露出的宽度
    var exposeWidth = 160;

    // 设置容器总宽度
    var boxWidth = imgWidth + exposeWidth * ( imgs.length - 1 );
    box.style.width = boxWidth + "px";

    // 设置每道门的初始位置
    function setImgsPos() {
        for( var i = 1 ; i < imgs.length ; i++ ) {
            imgs[i].style.left = ((i - 1) * exposeWidth + imgWidth) + "px";
        }
    }
    setImgsPos();

    // 计算每道门打开是应该移动的距离
    var translate = imgWidth - exposeWidth;

    // 为每道门绑定事件
    for(var i=0; i < imgs.length; i++) {
        // 使用立即调用的函数表达式,为了获得不同的i值
        (function(i) {
            imgs[i].onmouseover = function(){
                // 每道门复位
                setImgsPos();
                // 打开门
                for(var j=1; j <= i; j++) {
                    imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate +"px";
                }
            };
        })(i);
    }
};