zoukankan      html  css  js  c++  java
  • 超实用的JavaScript代码段 Item5 --图片滑动效果实现

    先上图

    这里写图片描述

    鼠标滑过那张图,显示完整的哪张图,移除则复位:

    这里写图片描述

    简单的CSS加JS操作DOM实现:

    <!doctype html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>sliding doors</title>
            <link rel="stylesheet" href="styles/reset.css" />
            <link rel="stylesheet" href="styles/slidingdoors.css" />
            <script src="scripts/slidingdoors.js"></script>
        </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>
        </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;
    }

    js操作:

    window.onload = function() {
        //容器对象
        var box = document.getElementById('container');
    
        //获得图片NodeList对象集合
        var imgs = box.getElementsByTagName('img');
    
        //单张图片的宽度
        var imgWidth = imgs[0].offsetWidth;
    
        //设置掩藏门体露出的宽度
        var exposeWidth = 180;
    
        //设置容器总宽度
        var boxWidth = imgWidth + (imgs.length - 1) * exposeWidth;
        box.style.width = boxWidth + 'px';
    
        //设置每道门的初始位置
        function setImgsPos() {
            for (var i = 1, len = imgs.length; i < len; i++) {
                imgs[i].style.left = imgWidth + exposeWidth * (i - 1) + 'px';
            }
        }
        setImgsPos();
    
        //计算每道门打开时应移动的距离
        var translate = imgWidth - exposeWidth;
    
        //为每道门绑定事件
        for (var i = 0, len = imgs.length; i < len; 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';
                        //imgs[j].style.left = j*exposeWidth +"px";
                    }
                };
                imgs[i].onmouseout = function(){
                    setImgPos();
                };
            })(i);
        }
    };  

    版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226

  • 相关阅读:
    Feign性能优化注意事项--超时
    Android MVP+Retrofit+dagger2+RxAndroid框架整合
    Android adb命令,linux中各种命令
    【视频音频】雷霄骅开源视音频项目汇总
    Android LitePal介绍与使用说明
    AndroidStudio第一次提交项目代码到git服务器/github
    Android框架之路——Fragmentation的使用(流式交互Demo)
    Android Studio 升级到3.0后出现编译错误.gradlecaches ransforms-1files-1.1*****-release.aar
    Android Studio你必须学会的快捷键(Eclipse转AS必看)
    Intellij IDEA常用配置详解
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4948164.html
Copyright © 2011-2022 走看看