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>

效果:
在這裏插入圖片描述

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