今天看秦时明月的时候点到了qinsmoon官网,看电视剧的时候发现整个界面都在下雪,这应该是一个层浮在最上面的,跟模态层一样,但鼠标能透过这个飘雪花的层,对网页进行正常操作。哎~有点儿意思,之前群里也有人问过,当时忙其它事就没在意,既然遇上了,就赶紧审查下元素,找到这些个雪花,一探究竟。
在开发者模式下,找到了这个层,层上的一个样式属性成功引起了我的注意。pointer-events:none,以前只知道pointer相关的cursor:pointer,google一下,看看是不是css3的,答案是肯定的。看手册。
语法:
pointer-events:auto | none | visiblepainted | visiblefill | visiblestroke | visible | painted | fill | stroke | all
默认值:auto
适用于:所有元素
继承性:有
取值:
auto: 与pointer-events属性未指定时的表现效果相同。在svg内容上与visiblepainted值相同
none: 元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶触发父元素的事件侦听器。
其他值只能应用在SVG上,HTML是不OK的。
说明:
设置或检索在何时成为属性事件的target。
使用pointer-events来阻止元素成为鼠标事件目标不一定意味着元素上的事件侦听器永不会触发。如果元素后代明确指定了pointer-events属性并允许其成为鼠标事件的目标,那么指向该元素的任何事件在事件传播过程中都将通过父元素,并以适当的方式触发其上的事件侦听器。当然位于屏幕上在父元素上但不在后代元素上的鼠标活动都不会被父元素和后代元素捕获(将会穿过父元素而指向位于其下面的元素)。
对应的脚本特性为pointerEvents。
引用张鑫旭关于pointer-events博文原话:
pointer-events:none的作用是让元素实体“虚化”。例如一个应用pointer-events:none的按钮元素,则我们在页面上看到的这个按钮,只是一个虚幻的影子而已,您可以理解为海市蜃楼,幽灵的躯体。当我们用手触碰它的时候可以轻易地没有任何感觉地从中穿过去。
浏览器兼容性
Firefox 3.6+和chrome 2.0+ 以及safari 4.0+都支持这个CSS3属性,IE6/7/8/9都不支持(好多其它属性这些浏览器也不支持,该淘汰掉!!!),Opera在SVG中支持该属性但是HTML中不支持。OK,适时适量使用。