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: 150px;
                height: 150px;
                background: darkcyan;
                opacity: 0.2;
                position: absolute;
                border: 2px solid #ccc;
                left: 0;
                top: 0;
            }
        </style>
    </head>
    
    <body>
        <div id="box"></div>
    
        <script>
            var box = document.getElementById('box');
            box.onclick = function () {
                run(box, {            // 将多个元素属性作为对象方式传进来
                    'width': 400,
                    'height': 400,
                    'opacity': 100
                });
            }
    
    
    
    
    
            function run(ele, json) {  // json 对象
                clearInterval(ele.timer);
                ele.timer = setInterval(function () {  // 开启每个元素自己的定时器
                    var tag = true;  // 开关标志
                    for (var i in json) {  // i:属性名   json[i]:属性值
                        if (i == 'opacity') {
                            var cur = parseFloat(getStyle(ele, i)) * 100;  // 透明度
                        } else {
                            var cur = parseInt(getStyle(ele, i));  // 大小,位置等 当前值
                        }
                        //  (目标值 - 当前值)/ 缩放比例
                        var speed = (json[i] - cur) / 10;  // 变速
                        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);  // 向右走 变速正,需要向上取整,反之向左走 变速负数,需要向下取整
    
                        if(cur != json[i]){  // 当前值未达到目标值时
                            tag = false;
                        }
                        // 赋值
                        if (i == 'opacity') {  // 透明度赋值
                            ele.style[i] = (cur + speed) / 100;
                        } else {
                            ele.style[i] = cur + speed + 'px';
                        }
    
                        if(tag){
                            clearInterval(ele.timer);
                        }
    
                    }
                }, 50)
            }
    
    
    
            // 获取元素非行间样式
            function getStyle(ele, attr) {
                if (window.getComputedStyle) {  // 标准
                    return getComputedStyle(ele)[attr];
                } else {  // ie
                    return ele.currentStyle[attr];
                }
            }
        </script>
    </body>
    
    </html>

    效果

  • 相关阅读:
    Mysql多实例配置
    Mysql多实例主从复制
    粪发涂墙-321
    粪发涂墙-123
    SpringCloud-粪发涂墙90
    线上BUG定位神器(阿尔萨斯)-Arthas2019-0801
    confluence-工具安装
    新应用启动之类冲突-2019-7-26
    新项目组之应用启动-2019-07-25
    新装虚拟机-2019-07-24日记
  • 原文地址:https://www.cnblogs.com/shihaiying/p/13276029.html
Copyright © 2011-2022 走看看