【javascript/css】關於鼠標事件onmousexxx和css偽類hover


  在運用鼠標移入移出事件時,一般有兩種做法,一種是DOM事件的"onmouseover"和"onmouseout",還有一種是css的偽類":hover"。

  在實際運用中如何選擇,取決於清楚明白的了解他們之間的區別。 


  HTML DOM 允許 JavaScript 對 HTML 事件作出反應。

  在我們為元素綁定了一個事件,當事件發生的時候,可以執行一段javascript代碼。

  關於鼠標事件,總共有:

    onmouseover和onmouseout 鼠標指針移動到或離開元素時觸發腳本

    onmousedown和onmouseup 鼠標按鈕被按下或松開時觸發腳本

    onclick和ondbclick 鼠標單擊和雙擊時觸發腳本

    onmousemover 鼠標指針移動時觸發腳本

  鼠標事件的使用方法大同小異,即在元素標簽內分配事件屬性,然后將需要執行的javascript代碼放置到事件觸發的函數內,當我們點擊該元素時,就會觸發相應javascript代碼。

  例如:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5         <meta http-equiv="Content-Language" content="utf-8" />
 6         <script type="text/javascript">
 7             function over(obj){        
 8                 obj.innerHTML = "進來了";        
 9                 obj.style.background = "red";
10             }
11             function out(obj){
12                 obj.innerHTML = "出去了";
13                 obj.style.background = "#666";        
14             }
15         </script>
16         <style type="text/css">
17             #box {
18                 width: 400px;
19                 border: 2px solid;
20                 margin: 200px auto;
21                 line-height: 100px;
22                 text-Align: center;
23             }
24             #img1,#img2 {
25                 height: 100px;
26                 margin: 2px;
27                 background: #ccc;
28             }
29             
30         </style>
31         <title>opacity</title>
32     </head>
33     <body>
34         <div id="box">
35             <div id="img1" onmouseover="over(this)" onmouseout="out(this)">這個是內容1</div>
36             <div id="img2">這個是內容2</div>
37         </div>
38     </body>
39 </html> 

  設立了2個相同的塊,分別給2個塊分配了鼠標指針移動到元素以及移出元素的事件onmouseover和onmouseout。

  鼠標沒有動作時:

  

  鼠標移動到內容1上:

  

  鼠標移出內容1:

    


  現在我們來嘗試用css的偽類:hover達到這種動態效果。

  我們在css樣式中添加如下代碼: 

1 #img2:hover {
2     background: #666;
3 }

  隨后看看效果:

  把鼠標移動到內容2上:

  

  移出:

  

  這樣就能看出區別了。

  CSS 是層疊樣式表 (Cascading Style Sheets)的縮寫,只能對元素的樣式做出改變,而無法對元素的內容動態更改,因為那是前端腳本所做的事。

  還有當鼠標移到元素上時,使用偽類":hover"和"onmouseover"雖然在一定程度上能夠達到同樣的效果,不過當移出元素后,運用了偽類":hover"的內容2恢復了移入前的狀態,而運用了"onmouseover"的內容1確保持了js對元素的更改,並且當元素綁定了多個事件時,元素保持最后一個觸發的事件的狀態。 


  所以在平時的使用中,如果僅止為了樣式顯示的效果,可以使用CSS的偽類,如果需要動態改變,則選擇js的事件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM