JavaScript側邊欄顯示和隱藏

admin發表於2017-10-27

在很多應用中,尤其是客服系統一般具有這樣的效果,那就是預設狀態下,會摺疊在網頁的一側,當滑鼠懸浮的時候會展開,下面就通過程式碼例項,介紹一下如何使用原生javascript實現此功能。

程式碼如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#thediv{
  width:150px;
  height:200px;
  background:#999999;
  position:absolute;
  left:-150px;
}
span{
  width:20px;
  height:100px;
  line-height:23px;
  background:#09C;
  position:absolute;
  right:-20px;
  top:70px;
}
</style>
<script>
window.onload=function(){
  var odiv=document.getElementById('thediv');
  odiv.onmouseover=function (){startmove(0,10);}
  odiv.onmouseout=function (){startmove(-150,-10);}
}
var timer=null;
function startmove(target,speed){
  var odiv=document.getElementById('thediv');
  clearInterval(timer);
  timer=setInterval(function (){
    if(odiv.offsetLeft==target){
      clearInterval(timer);
    }
    else{    
      odiv.style.left=odiv.offsetLeft+speed+'px';
    }
  },30)
}
</script>
</head>
<body>
<div id="thediv">
<span>螞蟻部落</span>
</div>
</body>
</html>

滑鼠懸浮於側邊欄可以實現展開,離開實現收縮功能,下面介紹一下實現過程。

一.程式碼註釋:

(1).window.onload=function(){},文件結構內容完全載入完畢再去執行函式中的程式碼。

(2).var odiv=document.getElementById('thediv'),獲取指定元素物件。

(3).odiv.onmouseover=function (){startmove(0,10);},為odiv物件註冊onmouseover事件處理函式。

(4).odiv.onmouseout=function (){startmove(-150,-10);},為odiv物件註冊onmouseout事件處理函式。

(5).var timer=null,宣告一個timer作為定時器函式的標識。

(6).function startmove(target,speed){}此函式是展開和摺疊的核心函式,第一個引數是left的目標值,speed是速度。

(7). var odiv=document.getElementById('thediv'),獲取元素物件。

(8).clearInterval(timer),停止前一個定時器函式的執行,可以防止多個定時器函式同時執行造成干擾。

(9).timer=setInterval(function (){},30),每隔30毫秒執行一次函式。

(10).if(odiv.offsetLeft==target){clearInterval(timer);},如果div元素距離body左邊緣等於規定的尺寸,就停止定時器函式。

(11).else{odiv.style.left=odiv.offsetLeft+speed+'px';},否則繼續設定left屬性值。

二.相關閱讀:

(1).onmouseover事件參閱JavaScript mouseover事件一章節。 

(2).onmouseout事件參閱JavaScript mouseout事件一章節。 

(3).clearInterval()函式參閱clearInterval()一章節。 

(4).setInterval()函式參閱setInterval()一章節。 

(5).offsetLeft屬性參閱JavaScript offsetLeft一章節。

相關文章