用加速度方式改变盒子的大小

通常我们看到的菜单是点击显示,鼠标离开立马消失。我们也可以利用计时器,让显示出来的菜单匀速或加速度消失。


每次递减一个单位

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        #dv {
            width:80px;
            height:200px;
            border:1px solid black;
            overflow:hidden; /*超出这个范围隐藏*/            
        }
    </style>
    <script type="text/ecmascript">
        //div高度变化,比如菜单折叠
        onload = function () {
            document.getElementById("btn1").onclick = function () {
                var div = document.getElementById("dv");
                //首先获得高度
                var h = div.offsetHeight;
                //利用计时器
                var intervalId = setInterval(function () {
                    //每次变化递减一个单位
                    h--;
                    if (h <= 0) {
                        //停下计时器
                        clearInterval(intervalId);
                        //隐藏这个框
                        div.style.display = "none";
                    }
                    div.style.height = h + "px";
                }, 20)           
            };
        };

    </script>
</head>
<body>
    <input type="button" name="name" value="文件" id="btn1" />    
    <div id="dv">
        新建<br />
        打开<br />
        关闭<br />
        设置<br />      
    </div>
</body>
</html>

用加速度的方式来实现高度变化

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        #dv {
            width:80px;
            height:200px;
            border:1px solid black;
            overflow:hidden; /*超出这个范围隐藏*/            
        }
    </style>
    <script type="text/ecmascript">
        //div高度变化,比如菜单折叠
        onload = function () {
            document.getElementById("btn1").onclick = function () {
                var div = document.getElementById("dv");
                //首先获得高度
                var h = div.offsetHeight;
                //利用计时器
                //利用计时器,每20毫秒变化一次
                var intervalId = setInterval(function () {
                    //获得div高度
                    var h = parseInt(div.style.height || div.offsetHeight)
                    //每次应该减去的高度(用加速度来递减高度)
                    var delta = Math.ceil(h / 10);
                    h = h - delta;
                    if (h <= 0) {
                        clearInterval(intervalId);//停止计时器
                        div.style.display = "none";//隐藏div
                    }
                    div.style.height = h - delta + "px";
                }, 20)
            };
        };

    </script>
</head>
<body>
    <input type="button" name="name" value="文件" id="btn1" />    
    <div id="dv">
        新建<br />
        打开<br />
        关闭<br />
        设置<br />      
    </div>
</body>
</html>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子松的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值