jQuery 滑鼠懸浮連結彈出跟隨圖片詳解

admin發表於2018-12-01

分享一段程式碼例項,它實現了當滑鼠滑過連結的時候,能夠出現跟隨滑鼠指標移動的圖層。

在實際應用中,一般是對於連結的一些說明文字或者圖片等。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
body{
  margin:0;
  padding:40px;
  background:#fff;
  color:#555;
  line-height:180%;
}
a{
  text-decoration:none;
  color:#f30; 
}
p{
  clear:both;
  margin:0;
  padding:.5em 0;
}
img{border:none;}
#screenshot{
  position:absolute;
  border:1px solid #ccc;
  background:#333;
  padding:5px;
  display:none;
  color:#fff;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
this.screenshotPreview=function(){ 
  xOffset = 10;
  yOffset = 30;
  $("a.screenshot").hover(function(e){
    this.t = this.title;
    var c = (this.t != "") ? "<br/>" + this.t : "";
    $("body").append("<p id='screenshot'><img src='"+this.rel+"' />"+c+"</p>");         
    $("#screenshot")
    .css("top",(e.pageY - xOffset) + "px")
    .css("left",(e.pageX + yOffset) + "px")
    .fadeIn("fast");      
  },
  function(){
    this.title = this.t; 
    $("#screenshot").remove();
  }); 
  $("a.screenshot").mousemove(function(e){
    $("#screenshot")
   .css("top",(e.pageY-xOffset)+"px")
   .css("left",(e.pageX+yOffset)+"px");
  });   
};
$(document).ready(function(){
  screenshotPreview();
});
</script>
</head>
<body>
<a href="#" class="screenshot" rel="mytest/demo/thesmall.jpg">螞蟻部落</a>
</body>
</html>

以上程式碼實現了我們的要求,下面簡單介紹一下實現過程:

一.程式碼註釋:

(1).this.screenshotPreview=function(){ },宣告一個函式用來實現跟隨效果,在本效果中,this其實是可以省略,它指向window。

(2).xOffset=10,宣告一個變數,用來規定滑鼠指標距離彈出圖片的橫向距離。

(3).yOffset=30,宣告一個變數,用來規定滑鼠指標距離彈出圖片的縱向距離。

(4).$("a.screenshot").hover(function(e){},function(e){}),規定當滑鼠移到連結和離開連結所要執行的函式。

(5).this.t = this.title,將連結的title屬性值賦值給t屬性,這裡的this是指向當前滑鼠懸浮的連結物件。

(6).var c = (this.t != "") ? "<br/>" + this.t : "",如果this.t不為空,也就是存在title屬性值,那麼插入一個換行符並且連線當前標題內容,否則將c設定為空。

(7).$("body").append("<p id='screenshot'><img src='"+ this.rel +"'/>"+ c +"</p>"),將圖片和相關說明新增到body。

(8).$("#screenshot").css("top",(e.pageY-xOffset)+"px").css("left",(e.pageX+yOffset)+"px").fadeIn("fast"),設定p元素的top和left屬性值,並且採用淡入效果展現。

(9).this.title=this.t,將title內容賦值給this.title,其實不要這一句也沒有任何問題,有點多餘。

(10).$("#screenshot").remove(),移出p元素。

(11).$("a.screenshot").mousemove(function(e){}),用來設定當滑鼠指標移動時,圖片能夠跟隨。

(12).$("#screenshot").css("top",(e.pageY-xOffset)+"px") .css("left",(e.pageX+yOffset)+"px"),設定p元素的top和left屬性值,能夠實現跟隨效果。

二.相關閱讀:

(1).hover()函式可以參閱jQuery hover事件一章節。

(2).append()函式可以參閱jQuery append()一章節。 

(3).css()函式可以參閱jQuery css()方法一章節。

(4).pageY屬性可以參閱jQuery event.pageY屬性一章節。

(5).fadeIn()函式可以參閱jQuery fadeIn()方法一章節。

(6).remove()函式可以參閱jQuery remove()方法一章節。 

(7).mousemove事件可以參閱jQuery mousemove事件一章節。

相關文章