js DOM--实现一个简易的滑动门特效

要求:实现一个滑动门特效

效果:http://zhangyugege.github.io/slidedoor/
源码:https://github.com/zhangyugege/slidedoor

  • 写html文档结构
  • 写css样式
  • 写js特效
  • gitpages发布

1.html文档结构

使用一个div包裹四张图片,便于定位

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="container">
        <img src="assets/door1.png" title="door1" alt="door1">
        <img src="assets/door2.png" title="door2" alt="door2">
        <img src="assets/door3.png" title="door3" alt="door3">
        <img src="assets/door4.png" title="door4" alt="door4">
    </div>
</body>
</html>

2.css样式

先引入<link href="css/reset.css" rel="stylesheet">

对#container进行相对定位。margin:0 auto实现水平居中。overflow实现边界溢出隐藏。设置高度和宽度。

然后对img进行绝对定位(相对于#container绝对定位),由于图片默认是display:inline的,所以把图片转成display:block(避免出现图片下方的小白条)。设置高度宽度和border。

#container{
            position: relative;
            margin: 0 auto;
            width: 960px;
            height: 478px;
            overflow: hidden;
        }
        img{
            position: absolute;
            display: block;
            width: 475px;
            height: 477px;
            border: solid 0.5px black;
        }

3.js特效

//在dom结构加载完成之后
window.onload=function(){
    //获取#container
    var box=document.getElementById('container');
    //获取imgs
    var imgs=box.getElementsByTagName('img');
    //通过offsetWidth获取每张图片的宽度
    var width=imgs[0].offsetWidth;
    //设置叠在一起的图片的宽度
    var tmpwidth=160;
    //初始化每张图片的定位。
    function init(){
    //第一张图片的left为0,第二张为width+0*tmpwidth,第三张为width+1*tmpwidth,以此类推。
        for(var i=0;i<imgs.length;i++){
            imgs[i].style.left=(i>0?(width+tmpwidth*(i-1)):0)+"px";
        }
    }
    //调用初始化函数
    init();

    //计算鼠标滑过时需要移动的图片移动的距离
    var translate=width-tmpwidth;
    for(var i=0;i<imgs.length;i++){
         //使用闭包,为每个图片添加mouseover事件
        (function(i){
            imgs[i].onmouseover=function(){
                //每次移动先初始化位置
                init();
                //除了第一张图片之外,第i张图片之前的图片都向左移动translate px。
                if(i>=1){
                //由于imgs[j].style.left是字符串(例如“10px”),使用parseInt把字符串转换为数字(“10px”-》10)
                    for(var j=1;j<=i;j++){
                        imgs[j].style.left=parseInt(imgs[j].style.left,10)-translate+'px';
                    }
                }
            }
        })(i);

    }


}

4.git pages发布

在github上创建 git pages,克隆到本地。
打开bash,找到路径

这里写图片描述

使用以上下划线标注的三条命令
git rm -rf .删除gh-pages分支下所有文件
git add . 把代码拷贝到路径下,使用git add .将代码添加进去
git commit -m 'hahah' 提交

在application上async以下。完成啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值