zoukankan      html  css  js  c++  java
  • js中的标签运动

    我们要给按钮绑定相关标签,按动按钮,标签运动

        <button>点击控制div标签</button>
        <button>点击控制p标签</button>
        <button>点击点击控制h标签</button>
        <p>我是p标签</p>
        <div>我是div标签</div>
        <h1>我是h1标签</h1>

    思路:

    利用起始位置和结束位置坐标完成,及相应运动步长
    1、先获取起始位置、结束位置的坐标,
    2、利用两个坐标差,获得两者之间的总距离
    3、定义一定时间每一步行走距离(距离为整数减小误差)
    4、利用定时器,规定一定时间内走完所有

    js代码如下:    var oDiv = document.querySelector('div');    var oP1 = document.querySelector('p');

    var oH1 = document.querySelector('h1');
    
        var oBtn1 = document.querySelectorAll('button')[0];
        var oBtn2 = document.querySelectorAll('button')[1];
        var oBtn3 = document.querySelectorAll('button')[2];
    
        //绑定监听事件
        //div标签距离左边205个像素
        oBtn1.addEventListener('click',function(){
            move(oDiv,{left:205},function(){console.log('div停止了')});
        })
        //p标签距离上方9个像素
        oBtn2.addEventListener('click',function(){
            move(oP1,{top:9},fff)
        })
        //h1标签距离左边7个像素
        oBtn3.addEventListener('click' , function(){
            move(oH1, {left:7},hhh );
        })
        //通用位移函数
        //a表示标签对象,b表示运动的方式和目标存储的对象,c表示对象中的结尾函数
        function move(a,b,c){
            //将运动函数进行for..in循环,
            for(var type in b){
                //获取css最终执行样式中的初始位置像素
                var oldVal = parseInt(window.getComputedStyle(a)[type]);
                //
                var time = setInterval(function() {
                    //新位置-初始位置就是总距离,再除以走的次数(步长),结果val为每一步走的距离
                    var val = (b[type] - oldVal)/ 100;
                    //取整,且判读正负,且通过正负向上或向下取整
                    val = val > 0 ? Math.ceil(val) : Math.floor(val);
                    //让原位置加新坐标,生成新的运动坐标,结果是运动的总距离
                    oldVal += val;
                    //将新坐标加上单位赋值给对象
                    a.style[type] = oldVal + 'px';
                    //判断,如果改变后位置,是目标位置,则清除定时器
                    if( oldVal == b[type]){
                        clearInterval(time);
                        //做结尾函数的调用
                        c();
                    }
    },
    10); } } function fff(){ console.log('不管你是谁,反正你的运动停止了'); } function hhh(){ console.log('我停止了'); }
    A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)
  • 相关阅读:
    Newton's Method in C#
    bat中的注释符
    Oracle query and backup
    Oracle Essentials
    修改Oracle 10g数据库字符集
    Some awareness before migrating from x86 to x64
    DataTable 那些事(二)
    很赞的PHP字符串加密函数
    PayPal 注册和使用详解
    ASP网站session超时,后台操作超时,重新登陆
  • 原文地址:https://www.cnblogs.com/karl-kidd/p/12639542.html
Copyright © 2011-2022 走看看