詳解css3屬性 pointer-events

CSS 鼠標 Firefox Safari Chrome 從小立志當全棧 2019-06-07

在日常開發中,我們可能遇到這樣的需求:一

詳解css3屬性 pointer-events

些元素可以穿透,我們點擊觸摸它不會觸發事件,甚至可以穿透點擊它下面的元素。

比如模態框樣式,防止按鈕反覆點擊,蒙版可穿透等。

eg:

詳解css3屬性 pointer-events

在這個tab選項卡中,即使最後一個元素被半透明蒙版遮住了,我們一般仍然允許它是可以被點擊到的(因為此處是可拖動選項卡,無法寫死點擊蒙版來選擇最後一個tab元素)。

這時候我們就會有一個需求,我們要求這個蒙版是可以穿透的,我們要通過穿透它來點擊它下面的元素。

其實這是挺麻煩的。因為如果隱藏刪除元素,那麼它的蒙版效果也會跟著不見。

但是CS3中新出的一個屬性完美的解決了一個問題。

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

詳解css3屬性 pointer-events

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

詳解css3屬性 pointer-events

對於我們來說,我們只需要記住兩個即可!

auto: 默認值,不允許穿透。

none: 可以穿透。

eg:

詳解css3屬性 pointer-events

在這裡,當 id box 的元素覆蓋住 id pox 的元素時,我們只需要給 box加一行 pointer-events: none; ,點擊 box 就可以穿透它直接觸發 pox 身上的事件。

詳解css3屬性 pointer-events

ps: 當DOM元素指定有id屬性時,不需要通過document.getElementById()來獲取定義它,它的id對應的值即為該dom元素對應的變量。

模態框應用

這個屬性是我在看colorUI的模態框源碼時候看到的,它主要是在模態框隱藏的時候給pointer-events的值改為none,使模態框不會因此而影響到頁面中的其它元素。當模態框顯示的時候再將pointer-events改為auto。

詳解css3屬性 pointer-events

詳解css3屬性 pointer-events

詳解css3屬性 pointer-events

兼容:

Firefox 3.6+和chrome 2.0+ 以及safari 4.0+, IE11都支持這個CSS3屬性。

相關推薦

推薦中...