空间长图

很简单的一个小Demo,通过控制鼠标事件以及其定位,来达到上下移动的目的。
页面结构分析:

  • 外部盒子div中包括一个img标签、两个span标签
  • img标签采用绝对定位,外部div盒子为相对定位
  • 当鼠标放在上面的span标签时让图片向上移动
  • 当鼠标放在下面的span标签时让图片向下移动
    js编程
    1. 获取图片标签和上面的span标签
    1. 给上面的span标签绑定onmouseover事件,事件触发的时候执行以下代码:
    1. 开启一个定时器,定时器中通过全局变量不断减小图片的top值,让图片整个向上移动
    1. 为防止鼠标进入多次触发以至于开启多个定时器,需要在鼠标进入的时候先执行清楚定时器;
    1. 设置图片运动限制,判断是否已经运动到图片底部,当图片移动到底部的时候停止定时器,不让图片运动;
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .xiaomi {
            width: 512px;
            height: 400px;
            border: 1px solid #f00;
            margin: 100px auto;
            overflow: hidden;
            position: relative;
        }

        .xiaomi span {
            position: absolute;
            left: 0;
            width: 100%;
            height: 200px;
            cursor: pointer;
        }

        .up {
            top: 0;
        }

        .down {
            bottom: 0;
        }

        .xiaomi img {
            position: absolute;
            top: 0;
            left: 0;
            vertical-align: middle;
        }
    </style>
</head>
<body>
<div class="xiaomi">
    <img src="mi.png" alt="" id="pic"/>
    <span class="up" id="goUp"></span>
    <span class="down" id="goDown"></span>
</div>
<script>
    var goUp = document.getElementById("goUp");
    var goDown = document.getElementById("goDown");
    var pic = document.getElementById("pic");
    var dist = 0;
    var timer = null;
    goUp.onmouseover = function () {
        clearInterval(timer);
        timer = setInterval(function () {
            dist -= 3;
            if (dist < -1070) {
                clearInterval(timer);
            } else {
                pic.style.top = dist + "px";
            }
        }, 30)//记得写时间!
    }
    goDown.onmouseover = function () {
        clearInterval(timer);
        timer = setInterval(function () {
            dist += 3;
            if (dist > 0) {
                clearInterval(timer);
            } else {
                pic.style.top = dist + "px";
            }
        }, 30)
    }
    goDown.parentNode.onmouseout = function () {
        clearInterval(timer);
    }


</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值