zoukankan      html  css  js  c++  java
  • JS运动应用

    ------------恢复内容开始------------

    多种物体同时运动:

    例子:多个Div,鼠标移入变宽
    单定时器,存在问题

    每个Div一个定时器

    <!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>
            div{
                width: 100px;
                height: 30px;
                background: red;
                margin: 10px;
            }
        </style>
        <script>
            window.onload = function () {
                var oDiv =document.getElementsByTagName('div');//获取所有的div
                for (let i = 0; i < oDiv.length; i++) {//循环出所有的div
                    oDiv[i].time = null;//给每个div加一个定时器。解决:单个定时器,出现的问题
                    oDiv[i].onmouseover = function(){
                        starMove(this,400);
                    };
                    oDiv[i].onmouseout = function (){
                        starMove(this,100)
                    }
                    
                }
            }
            function starMove(obj,iTarget){
                clearInterval(obj.time);//停止每个div的定时器
                obj.time = setInterval(function(){
                    var speed = (iTarget-obj.offsetWidth)/6;//div的运行速度
                    speed = speed>0?Math.ceil(speed):Math.floor(speed);//速度值的上下取整
                    if(obj.offsetWidth == iTarget){//判断div的宽度是否等于目标点
                        clearInterval(obj.time);//如果等于目标点就清除定时器
                    }else{
                        //反之
                        obj.style.width = obj.offsetWidth+speed+'px';
                    }
                },30)
            }
        </script>
    </head>
    <body>
        <div></div>
        <div></div>
        <div></div> 
    </body>
    </html>

    多物体运动框架

    定时器作为物体的属性

    参数的传递:物体、目标值

    例子:多个Div淡入淡出

    所有东西都不能共用

    属性与运动对象绑定:速度、其他属性值(如透明度)

    <!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>
            div{
                width: 200px;
                height: 100px;
                margin: 20px;
                float: left;
                background: red;
                filter: opacity(30);
                opacity: 0.3;
            }
        </style>
        <script>
            window.onload = function () {
                var oDiv = document.getElementsByTagName('div');
                for(var i = 0;i<oDiv.length;i++){
                    oDiv[i].alpha = 30;
                    oDiv[i].onmouseover = function(){
                        startMove(this,100);
                    };
                    oDiv[i].onmouseout = function(){
                        startMove(this,30);
                    }
                }
            }
            //var alpha = 30;所有的东西都不能公用
            function startMove (obj,iTarget) {
                clearInterval(obj.time);
                obj.time = setInterval(function(){
                    var speed = (iTarget-obj.alpha)/6;
                    speed = speed>0?Math.ceil(speed):Math.floor(speed);
                    if (obj.alpha == iTarget) {
                        clearInterval(obj.time);
                    } else {
                        obj.alpha+=speed;
                        obj.style.filter = 'alpha(opacity:'+obj.alpha+')';
                        obj.style.opacity = obj.alpha/100;
                    } 
                },30)
            }
        </script>
    </head>
    <body>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </body>
    </html>
  • 相关阅读:
    每周进度条(第九周)
    团队项目最后更改版
    项目需求分析与建议 NABCD模型
    课堂练习找水王
    问题账户需求分析
    2016年秋季个人阅读计划
    学习进度条
    用户体验
    程序员修炼之道——从小工到专家阅读笔记03
    程序员修炼之道——从小工到专家阅读笔记02
  • 原文地址:https://www.cnblogs.com/520yh/p/12893424.html
Copyright © 2011-2022 走看看