css3 pointer-events(阻止hover、active、onclick等觸發事件)


pointer-events CSS 屬性指定在什么情況下 (如果有) 某個特定的圖形元素可以成為鼠標事件的 target

/* Keyword values */ pointer-events: auto; pointer-events: none; pointer-events: visiblePainted; /* SVG only */ pointer-events: visibleFill; /* SVG only */ pointer-events: visibleStroke; /* SVG only */ pointer-events: visible; /* SVG only */ pointer-events: painted; /* SVG only */ pointer-events: fill; /* SVG only */ pointer-events: stroke; /* SVG only */ pointer-events: all; /* SVG only */ /* Global values */ pointer-events: inherit; pointer-events: initial; pointer-events: unset;

當此屬性未指定時,visiblePainted值的相同特征適用於 SVG(可縮放矢量圖形) 內容。

除了指示該元素不是鼠標事件的目標之外,值none表示鼠標事件“穿透”該元素並且指定該元素“下面”的任何東西。

初始值 auto
適用元素 all elements
是否是繼承屬性 yes
適用媒體 visual
計算值 as specified
Animation type discrete
正規順序 the unique non-ambiguous order defined by the formal grammar

pointer-events 更像是JavaScript,它能夠:

  • 阻止用戶的點擊動作產生任何效果

  • 阻止缺省鼠標指針的顯示

  • 阻止CSS里的 hover 和 active 狀態的變化觸發事件

  • 阻止JavaScript點擊動作觸發的事件

 

實際代碼使用中案例:

1、提交頁面,提交按鈕點擊后,添加這個樣式屬性(),來防止重復提交。 @camnpr

2、一些層的絕對定位,覆蓋按鈕,穿透可以點擊它。等等。

來看下具體用法:

pointer-events:  auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit

pointer-events屬性有很多值,但是對於瀏覽器來說,只有auto和non兩個值可用,其它的幾個是針對SVG的(本身這個屬性就來自於SVG技術)。

 

pointer-events屬性值詳解

  • auto——效果和沒有定義pointer-events屬性相同,鼠標不會穿透當前層。在SVG中,該值和visiblePainted的效果相同。

  • none——元素不再是鼠標事件的目標,鼠標不再監聽當前層而去監聽下面的層中的元素。但是如果它的子元素設置了pointer-events為其它值,比如auto,鼠標還是會監聽這個子元素的。

  • 其它屬性值為SVG專用,這里不再多介紹了。

 

瀏覽器兼容性

Firefox 3.6+和chrome 2.0+ 以及safari 4.0+都支持這個CSS3屬性,IE6/7/8/9都不支持(IE11又支持,不過很好的一點是在ie中給a加disabled 點擊事件自動無效。),Opera在SVG中支持。 但是 該屬性HTML中 不支持 


免責聲明!

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



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