js實現彈出層滑鼠跟隨效果

admin發表於2017-04-08

本章節分享一段程式碼例項,它使用原生javascript實現了彈出層滑鼠跟隨效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#preview{
  width:300px;
  height:200px;
  border:5px solid darkgoldenrod;
  background:#ccc;
  color:#fff;
  padding:5px;
  display:none;
  position:absolute;
}
#hover{
  width:300px;
  height:200px;
  background:#ccc;
  text-align:center;
  line-height:200px;
  color:black;
}
</style>
<script type="text/javascript">
window.onload=function(){
  var xOffset = 10;
  var yOffset = 10;
  var hover=document.getElementById("hover");
  var preview=document.getElementById("preview");
  hover.onmouseover=function(ev){
    var ev=window.event||ev;
    var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
    var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
    preview.style.display="block";
    preview.style.top=((ev.pageY?ev.pageY:ev.clientY + scrollY)+yOffset)+"px";
    preview.style.left=((ev.pageX?ev.pageX:ev.clientX + scrollX)+xOffset)+"px";
  }
  hover.onmouseout=function(ev){
    preview.style.display="none";
  }
  hover.onmousemove=function(){
    var ev=window.event||ev;
    var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
    var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
    preview.style.top=((ev.pageY?ev.pageY:ev.clientY + scrollY)+yOffset)+"px";
    preview.style.left=((ev.pageX?ev.pageX:ev.clientX + scrollX)+xOffset)+"px";
  }
}
</script>
</head>
<body>
<div id="hover">滑鼠放在這裡</div>
<div id='preview'>jquery實現跟隨滑鼠移動的彈層</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

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

(2).var xOffset = 10,用來規定彈出層距離滑鼠指標的水平距離。

(3).var yOffset = 10,用來規定彈出層距離滑鼠指標的垂直距離。

(4).var hover=document.getElementById("hover"),獲取id屬性值為hover的元素物件。(5).var preview=document.getElementById("preview"),獲取id屬性值為preview的元素物件。

(6).hover.onmouseover=function(ev){},註冊onmouseover事件處理函式,引數ev是事件物件。

(7).var ev=window.event||ev,相容所有瀏覽器的事件物件相容。

(8).var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft,獲取網頁向上滾動的尺寸。

(9).var scrollY = document.documentElement.scrollTop || document.body.scrollTop,獲取網頁向左滾動的尺寸。

(10).preview.style.display="block",彈出層顯示。

(11).preview.style.top=((ev.pageY?ev.pageY:ev.clientY + scrollY)+yOffset)+"px",設定彈出層的top屬性值。

(12).preview.style.left=((ev.pageX?ev.pageX:ev.clientX + scrollX)+xOffset)+"px",設定彈出層的left屬性值。

(13).hover.onmouseout=function(ev){

  preview.style.display="none";

},當滑鼠滑鼠離開的時候,彈出層消失。

二.相關閱讀:

(1).var ev=window.event||ev可以參閱var ev=window.event||ev的作用是什麼一章節。

(2).document.documentElement.scrollLeft || document.body.scrollLeft可以參閱document.documentElement.scrollTop瀏覽器相容一章節。

(4).clientY和clientX可以參閱javascript clientX一章節。

(5).onmouseout事件可以參閱javascript mouseout事件一章節。

(6).onmousemove事件可以參閱javascript mousemove事件一章節。

相關文章