[前端]JavaScript滑动门特效

Posted 童凌

tags:

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

摘要:本文使用javascript中的DOM操作,编写代码实现电商网站常用的一个滑动特效。

本例用使用到的四张图像如下:

  1. 首先编写html代码,建立基本标签,文件存为index.html.
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">      
        <title>sliding-doors</title>
    </head>

    <body>
        <div id = "container">
            <img src = "img/door1.png" ></img>
            <img src = "img/door2.png" ></img>
            <img src = "img/door3.png" ></img>
            <img src = "img/door4.png" ></img>
        </div>
    </body>
</html>
  1. 针对刚才的格式编写CSS样式,将图像限制在一个边框内。将文件另存为door.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;

在当前目录创建styles 文件夹,将door.css放入该文件夹,在index.html head标签内插入以下代码:

  <link rel="stylesheet" href ="styles/door.css">

3.创建Javascript

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 + (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*0.1 + 'px';

                
            ;
        )(i);
    
;  

最后建立scripts文件夹,创建slidingdoors.js 将代码写入该文件,最后在index.html head标签内加入:

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

特效制作完成。

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

前端javascript实现导航栏筋斗云效果特效

炫酷的花式滑块滑动无缝切换特效

炫酷的花式滑块滑动无缝切换特效

前端基础 滑动门

HTML 3D旋转特效,前端开发常用javascript特效_3D旋转

TouchSlide触屏滑动特效插件的使用