通过JS完成电梯动画效果

实习单位要求做一个在Vue项目中比较能适配的来反映货梯当前状况的页面效果

用JS写了一个

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>电梯</title>
        <style>
            div.solid {
                border-style: solid;
                margin-top: 300px;
                width: 200px;
            }
        </style>
    </head>
    <body>
        <div style="height: 500px;">
            <div class="solid" id='dianti'>?&emsp;<span>当前所在楼层:</span><span id = 'diantival'></span></div>
            <div style="position: fixed; bottom: 300px;">
                <div>
                    <br/>
                    <button οnclick="rise()">冲!!!</button>&nbsp;
                    <button οnclick="full()">降!!!</button>
                </div>
                <div>
                    <br/>
                    <button οnclick="change(1)">使电梯到1楼</button>&emsp;
                    <button οnclick="change(2)">使电梯到2楼</button>&emsp;
                    <button οnclick="change(3)">使电梯到3楼</button>
                </div>
            </div>
        </div>
        <script>
            function getTop(){
                let dt = document.getElementById("dianti");
                let computedStyle = getComputedStyle(dt, null);
                let num = 0;
                for(let i = 0; i < computedStyle.marginTop.length - 2; i++){
                    num *= 10;
                    num += parseInt(computedStyle.marginTop[i]);
                }
                return num;
            }
            var Interval = null;
            var floor = 1;
            document.getElementById("diantival").innerText = floor;
            function change(val){
                let timer = 0;
                if(floor == 1 && val > 1){
                    let temp = (val - floor) * 100;
                    Interval = setInterval(function(){
                        let len = getTop();
                        if(len == 0){
                            return
                        }
                        len--;
                        timer++;
                        if(timer == temp){
                            clearInterval(Interval);
                            document.getElementById("diantival").innerText = val;
                        }
                        document.getElementById("dianti").style.marginTop = len + 'px';
                    }, 50);
                }else if(floor == 2){
                    let temp = 100;
                    if(val == 1){
                        Interval = setInterval(function(){
                        let len = getTop();
                        if(len == 300){
                            return
                        }
                        len++;
                        timer++;
                        if(timer == temp){
                            clearInterval(Interval);
                            document.getElementById("diantival").innerText = val;
                        }
                        document.getElementById("dianti").style.marginTop = len + 'px';
                    }, 50);
                    }else if(val == 3){
                        Interval = setInterval(function(){
                        let len = getTop();
                        if(len == 0){
                            return
                        }
                        len--;
                        timer++;
                        if(timer == temp){
                            clearInterval(Interval);
                            document.getElementById("diantival").innerText = val;
                        }
                        document.getElementById("dianti").style.marginTop = len + 'px';
                    }, 50);
                    }
                }else if(floor == 3){
                    let temp = (floor - val) * 100;
                    Interval = setInterval(function(){
                        let len = getTop();
                        if(len == 300){
                            return
                        }
                        len++;
                        timer++;
                        if(timer == temp){
                            clearInterval(Interval);
                            document.getElementById("diantival").innerText = val;
                        }
                        document.getElementById("dianti").style.marginTop = len + 'px';
                    }, 50);
                }
                floor = val;
            }
            function rise(){
                setInterval(_rise, 100);
            }
            function full(){
                setInterval(_full, 100);
            }
            function _rise(){
                let len = getTop();
                if(len == 0){
                    return
                }
                len--;
                document.getElementById("dianti").style.marginTop = len + 'px';
            }
            function _full(){
                let len = parseInt(getTop());
                if(len == 300){
                    return
                }
                len+=1;
                document.getElementById("dianti").style.marginTop = len + 'px';
            }
        </script>
    </body>
</html>

 

转载于:https://www.cnblogs.com/qq965921539/p/11168900.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值