css屏蔽元素的鼠標事件pointer-events

// 屏蔽點擊
$('body').css('pointer-events', 'none');
//恢復默認
$('body').css('pointer-events', 'auto');
 
用處:
   能夠在彈出層的時候或者fixed定位時,設置下面元素的鼠標事件
 
var pop = function(msg, delay, cb) {
        var _msg = msg || '網絡不給力,請稍後再試試吧',
            _delay = delay || 3000;

        if($('#pop').hasClass('hide')) {
            $('#pop').removeClass('hide')
        }

        if($('#pop').length > 0) {
            $('#pop').html(_msg);
        } else {
            $('body').append('<div id="pop">'+_msg+'</div>');
        }

        setTimeout(function() {
            $('#pop').addClass('hide');
            cb && cb()
        }, _delay)

    }

  以上是一個簡單的吐司效果(文字在中間顯示出來,3秒後自動消失)javascript

在顯示期間,下面的body元素,屏蔽點擊事件,css

消失後,恢復body點擊事件。 這樣一來不用去給body臨時綁定事件和去除事件綁定。html

pointer-events 的多個狀態值
pointer-events:  auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit

 不過在瀏覽器中   auto 和 none 就能夠了java

auto:效果和沒有定義pointer-events屬性相同,鼠標不會穿透當前層。。瀏覽器

none:元素再也不是鼠標事件的目標,鼠標再也不監聽當前層而去監聽下面的層中的元素。可是若是它的子元素設置了pointer-events爲其它值,好比auto,鼠標仍是會監聽這個子元素的。網絡

相關文章
相關標籤/搜索