zoukankan      html  css  js  c++  java
  • 多元素运动

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                margin:0;
                padding:0;
            }
            .box{
                width:100px;
                height:100px;
                float:left;
                background:slateblue;
                margin:30px;
            }
        </style>
    </head>
    <body>
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <script>
            var box = document.getElementsByClassName('box');
    
    
            for(var i=0;i<box.length;i++){
                box[i].onmouseover = function(){
                    run(this,'height',500,10)
                }
    
                box[i].onmouseout = function(){
                    run(this,'height',100,10)
                }
            }
    
    
            function run(ele,attr,target,param) {
                clearInterval(ele.timer);
                ele.timer = setInterval(function () {  // 开启每个元素自己的定时器
                    if(attr == 'opacity'){
                        var cur = parseFloat(getStyle(ele, attr)) * 100;  // 透明度
                    }else{
                        var cur = parseInt(getStyle(ele, attr));  // 大小,位置等 当前值
                    }                
                    //  (目标值 - 当前值)/ 缩放比例
                    var speed = (target - cur) / param;  // 变速
                    speed = speed > 0? Math.ceil(speed) : Math.floor(speed);  // 向右走 变速正数,需要向上取整,反之向左走 变速负数,需要向下取整
                    if (cur >= target&& speed>0  || cur<=target && speed<0) {
                        cur = target;
                        clearInterval(ele.timer);
                    }
    
                    if(attr == 'opacity'){  // 透明度赋值
                        ele.style[attr] = (cur + speed) / 100;
                    }else{
                        ele.style[attr] = cur + speed + 'px';
                    }
                }, 50)
            }
    
    
    
            // 获取元素非行间样式
            function getStyle(ele, attr) {
                if (window.getComputedStyle) {  // 标准
                    return getComputedStyle(ele)[attr];
                } else {  // ie
                    return ele.currentStyle[att];
                }
            }
        </script>
    </body>
    </html>

    效果

  • 相关阅读:
    cookie和session的区别和用法
    JavaScript深浅拷贝
    前端知识
    typescript -- ts
    vue笔记精华部分
    宜人贷项目里-----正则匹配input输入月份规则
    PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
    PHP socket客户端长连接
    PHP exec/system启动windows应用程序,执行.bat批处理,执行cmd命令
    查看局域网内所有ip
  • 原文地址:https://www.cnblogs.com/shihaiying/p/13276033.html
Copyright © 2011-2022 走看看