JS学习笔记09-运动基础1

一、运动基础

1.1 通过定位的left、top让DIV动起来

需要先通过,offsetLeft 来获取元素的左边距
在Chrome,opera和IE浏览器中offsetLeft是 元素边框外侧到浏览器窗口内侧的距离 且body.offsetLeft=0,

需要解决的问题:

  • 1.2 速度 移动的快慢
  • 1.3 不会停止
  • 1.4 重复点击速度加快
  • 1.5 速度取某些值不会停止
<body>
    <input type="button" id="btn1" value="开始运动" onclick="startMove()">
    <div id="div1"></div>
</body>
<script>
    var timer = null;
    function startMove(){
        var div = document.getElementById('div1');
        //解决重复点击速度加快
        clearInterval(timer);
        timer = setInterval(function(){
        	//速度
            var speed=7;

            //解决到达终点过后还会运动和点击还会移动
            if(div.offsetLeft >= 300){
                clearInterval(timer);
            }else{
                div.style.left=div.offsetLeft+speed+'px';
            }
        },30);
    }
</script>

效果:
在这里插入图片描述

二、侧边栏

2.1 offsetLeft 元素边框外侧到浏览器窗口内侧的距离

在父元素均不设置position属性时,
在Chrome,opera和IE浏览器中offsetLeft是元素边框外侧到浏览器窗口内侧的距离且body.offsetLeft=0,

实例:鼠标移入移出 侧边栏移入移出。

<body>
    <div id="div1">
        <span>分享到</span>
    </div>
</body>

<script>
    window.onload=function(){
        var div=document.getElementById('div1');
        div.onmouseover=function(){
            startMove(0)
        };
        div.onmouseout=function(){
            startMove(-150);
        }
    }
    var timer=null;

    function startMove(itarget){
        
        var div=document.getElementById('div1');
        
        //自动判断是向左走,还是向右走
        if(div.offsetLeft>itarget){
            speed=-10;
        }else{
            speed=10;
        }

        clearInterval(timer);
        timer=setInterval(function(){
            if(div.offsetLeft == itarget){
                clearInterval(timer);
            }else{
                div.style.left=div.offsetLeft+speed+'px';
            }
        },30);
    }
</script>

效果:
在这里插入图片描述

三、淡入淡出图片

3.1 opacity:0-1; 设置元素的透明度

兼容性: filter:Alpha(opacity=[0-100]); 兼容IE以上的
0是完全透明,1是完全不透明

<body>
    <div id="div1"></div>
</body>

<script>
    window.onload=function(){
        var div = document.getElementById('div1');
        //手动设置的默认透明度
        var alpha=30;

        div.onmouseover=function(){
            startMove(100);
        }
        div.onmouseout=function(){
            startMove(30);
        }

        var timer=null;
        function startMove(itarget){

            var div = document.getElementById('div1');
            
            //预防多开定时器引发混乱
            clearInterval(timer);
            timer = setInterval(function(){
                var speed=0;
                if(alpha<itarget){
                    speed=1;
                }else{
                    speed= -1;
                }

                if(alpha == itarget){
                    clearInterval(timer);
                }else{
                    alpha+=speed;
                    //IE8以上
                    div.style.opacity='alpha(opaticy='+alpha+')';
                    //兼容火狐和Chrome
                    div.style.opacity=alpha/100;
                }
            });
        }
    }
</script>

效果:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章