欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JS如何實現(xiàn)類似QQ好友頭像hover時顯示資料卡的效果(推薦)

 更新時間:2016年06月09日 10:39:02   作者:starof  
通過本文給大家介紹鼠標經(jīng)過好友列表中的好友頭像時顯示資料卡的效果,非常不錯具有參考借鑒價值,感興趣的朋友一起看下吧

一、應用場景

鼠標hover彈出div,并且鼠標離開后不能馬上隱藏,因為這個div上還有功能入口。比如:

鼠標經(jīng)過好友列表中的好友頭像時顯示資料卡的效果如下所示:

hover時顯示二維碼

二、實現(xiàn)

用如下這樣一個簡單的效果:鼠標hover到A上顯示B來模擬

有2種實現(xiàn)方式,推薦第二種,第一種有弊端下面會說。

1、方法一

原理:把觸發(fā)元素A和要顯示元素B放于同一個父級元素內(nèi),鼠標經(jīng)過父級元素時觸發(fā)顯示B。這樣鼠標移動到B時仍然 處于該父級元素內(nèi),則div不會隱藏。

代碼:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover A show B</title>
<script src="http://code.jquery.com/jquery-1.12.2.min.js"></script>
<style type="text/css">
#hook { float: left; margin: 10px 0 10px 10px; width: 50px; height: 50px; background-color: #ccc; }
#msg-box { border: 1px solid black; width: 200px; height: 150px; display: none; float: left; padding: 10px }
</style>
</head>
<body>
<div id="hoverWrap">
 <div id="hook">A</div>
 <div id="msg-box">功能模塊B</div>
</div>
<script type="text/javascript">
$("#hoverWrap").hover(function(){
 $("#msg-box").toggle();
});
</script>
</body>
</html>

這種方法實現(xiàn)起來比較簡單,但需包裹一層父標簽且有個弊端:兩個元素不能有間距。

2、方法二

原理:鼠標經(jīng)過A時彈出B,鼠標移出A,設置一個計時器延遲0.5s再關閉B,所以鼠標移入A時需判斷,如果有計時器則先清除計時器再顯示B。

當用戶離開觸發(fā)事件的A后,資料卡div要延時0.5秒才后關閉,用戶擁有足夠的時間進行相應的操作,當鼠標移入資料卡B,將B中之前正在計時關閉B的計時器關閉。

完整代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover A show B</title>
<script src="http://code.jquery.com/jquery-1.12.2.min.js"></script>
<style type="text/css">
#hook { float: left; margin: 10px; width: 50px; height: 50px; background-color: #ccc; }
#msg-box { border: 1px solid black; width: 200px; height: 150px; display: none; float: left; padding: 10px }
</style>
</head>
<body>
<div id="hook">A</div>
<div id="msg-box">功能模塊B</div>
<script type="text/javascript">
var timer;
$("#hook,#msg-box").bind("mouseover",showMsgBox);
$("#hook").bind("mouseout",hideMsgBox);
$("#msg-box").bind("mouseout",function(){
 if(timer){clearTimeout(timer);}
 $("#msg-box").hide(); 
});
function showMsgBox(){
 if(timer){clearTimeout(timer);}
 $("#msg-box").show();
}
function hideMsgBox(){
 timer=setTimeout(function(){
  $("#msg-box").hide();
 },500);
}
</script>
</body>
</html>

js部分:

<script type="text/javascript">
var timer;
$("#hook,#msg-box").bind("mouseover",showMsgBox);
$("#hook").bind("mouseout",hideMsgBox);
$("#msg-box").bind("mouseout",function(){
 if(timer){clearTimeout(timer);}
 $("#msg-box").hide(); 
});
function showMsgBox(){
 if(timer){clearTimeout(timer);}
 $("#msg-box").show();
}
function hideMsgBox(){
 timer=setTimeout(function(){
  $("#msg-box").hide();
 },500);
}
</script>

注意事項

1、觸發(fā)事件用mouseover而非mousemove。

mouseover:鼠標移入目標元素上方時觸發(fā)。

mousemove:鼠標在元素內(nèi)部移動時不斷觸發(fā)。

所以用mouseover,mousemove耗資源。

更多信息可參考:http://www.cnblogs.com/starof/p/4106904.html

2、 調(diào)用timer前先聲明

若不聲明,則timer在第一次鼠標移出時才會聲明,所以第一次鼠標移入時會報錯提示timer未聲明。

3、調(diào)用mouseover事件前必須先清除定時器

若不清除,計時0.5s后會自動關閉B

三、封裝成一個通用功能

考慮到這個功能比較通用,所以封裝了一下。因為js需要處理一些兼容性問題,所以用jquery來寫。

/**
* @Description 鼠標hover到oHook上顯示oMsgBox。
* @Author  liuxiaoyan 
* @Date  2016-03-24 15:01:13
* @Last Modified by: liuxiaoyan
* @Last Modified time: 2016-03-24 15:01:13
*/
/**
* @param oHook:要hover上去的元素
* @param oMsgBox:hover上去要顯示的元素
* 調(diào)用示例:hoverShowMsg.init({hook:$(".viewPhone"),msgBox:$(".viewPhonescan")});
*/
var hoverShowMsg=(function(){
 var oHook,
  oMsgBox,
  timer;
 function init(o){
  oHook=o.hook;
  oMsgBox=o.msgBox;
  bindEvent();
 }
 function bindEvent(){
  oHook.bind({
   mouseover:showMsgBox,
   mouseout:hideMsgBox
  });
  oMsgBox.bind({
   mouseover:showMsgBox,
   mouseout:function(){
   if(timer){clearTimeout(timer);}
   oMsgBox.hide();
  }
  });
 }
 function hideMsgBox(){
  timer=setTimeout(function(){
   oMsgBox.hide();
  },500);
 }
 function showMsgBox(){
  if(timer){clearTimeout(timer);}
  oMsgBox.show();
 }
 return{init:init};
})();

以上所述是小編給大家介紹的基于JS如何實現(xiàn)類似QQ好友頭像hover時顯示資料卡的效果(推薦)的全部內(nèi)容,希望對大家有所幫助,如果大家有疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • JavaScript中如何判斷一個值的類型

    JavaScript中如何判斷一個值的類型

    在js中有一個運算符可以幫助我們判斷一個值的類型,它就是typeof運算符。下面通過本文給大家分享JavaScript中如何判斷一個值的類型,需要的朋友參考下吧
    2017-09-09
  • 清除js緩存的多種方法總結(jié)

    清除js緩存的多種方法總結(jié)

    下面小編就為大家?guī)硪黄宄齤s緩存的多種方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • JS非Alert實現(xiàn)網(wǎng)頁右下角“未讀信息”效果彈窗

    JS非Alert實現(xiàn)網(wǎng)頁右下角“未讀信息”效果彈窗

    這篇文章主要介紹了JS非Alert實現(xiàn)網(wǎng)頁右下角“未讀信息”效果彈窗的方法,涉及JavaScript動態(tài)操作頁面元素實現(xiàn)彈窗效果的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • javascript繪制漂亮的心型線效果完整實例

    javascript繪制漂亮的心型線效果完整實例

    這篇文章主要介紹了javascript繪制漂亮的心型線效果實現(xiàn)方法,結(jié)合完整實例形式分析了JavaScript圖形繪制的具體步驟與相關實現(xiàn)技巧,需要的朋友可以參考下
    2016-02-02
  • js操作二級聯(lián)動實現(xiàn)代碼

    js操作二級聯(lián)動實現(xiàn)代碼

    網(wǎng)上二級(多級)聯(lián)動的例子也不少,有各種不同的操作方法。我所采用的方法網(wǎng)上也應該有的,不過我還沒有看到過。
    2010-07-07
  • 前臺js對象在后臺轉(zhuǎn)化java對象的問題探討

    前臺js對象在后臺轉(zhuǎn)化java對象的問題探討

    在開發(fā)項目中多次遇到前臺js對象在后臺轉(zhuǎn)化java對象的問題,下面就為大家介紹下前臺js對象轉(zhuǎn)后臺java對象,感興趣的朋友可以了解下
    2013-12-12
  • js滾輪事件兼容性問題需要注意哪些

    js滾輪事件兼容性問題需要注意哪些

    這篇文章主要為大家詳細介紹了js滾輪事件需要注意的兼容性問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JavaScript實現(xiàn)加密與解密詳解

    JavaScript實現(xiàn)加密與解密詳解

    這篇文章介紹了JavaScript實現(xiàn)加密與解密詳解的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 全面解析多種Bootstrap圖片輪播效果

    全面解析多種Bootstrap圖片輪播效果

    這篇文章主要為大家全面解析多種Bootstrap圖片輪播效果,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 用js實現(xiàn)層隨著內(nèi)容大小動態(tài)漸變改變 推薦

    用js實現(xiàn)層隨著內(nèi)容大小動態(tài)漸變改變 推薦

    以前做谷歌的小工具時,api里提供了一個很有用的函數(shù),那就是在程序運行時可以使層動態(tài)隨內(nèi)容大小而變化,而且是平滑變換,在一些jquery的lightbox里也普遍有這種效果,看起來很酷的樣子。
    2009-12-12

最新評論