IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

CSS3 pointer-event介绍

前端观察 2011-09-14 13:43:10 累计浏览 2,256 次
本机暂存

    其实早知道这个属性,但是一直没有去研究过。今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下。嗯,其实这是个比较简单的CSS3属性。

    在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样的话,这些浮在上面的div或者其它元素一般都会给个宽高,或者relative的元素可以不给宽高,这个时候,这些元素就会盖住下面的地图层,以至于地图层无法操作。。。

    然后正好在Google map见到了类似的问题,拿来当例子来说:

    原图已失效

    Google map中左上角的操作区域占位是挺大的,如红色框区域,然后在这个区域是无法操作地图层的。那么我们就可以给这个div设置 pointer-events:none,然后你就会发现下面的地图就可以拖动和点击了。

    但是悲剧的是,操作区域本身却无法操作了,直接被无视掉了。不过不用担心,我们可以给里面的元素重新设置为 pointer-events:auto,当然,只给需要操作的元素区域设置。

    貌似有点儿纠结,不过这样可以保证地图本身的可操作区域最大化。

    嗯,上面只是个简单的例子,来看下具体用法:

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都不支持,Opera在SVG中支持该属性但是HTML中不支持。好吧,还是有点儿悲催~~

    同分类推荐文章

    1. translateZ() (2026-06-25 21:18:56)
    2. translateY() (2026-06-25 21:17:56)
    3. translateX() (2026-06-25 21:16:01)

    查看更多 前端 文章 →

    建议继续学习

    1. 程序员技术练级攻略 (累计阅读 35,468)
    2. css3:box-shadow边框阴影属性值详解 (累计阅读 27,109)
    3. Hello! 404 (累计阅读 9,384)
    4. 优雅绝妙的Javascript跨域问题解决方案 (累计阅读 8,067)
    5. 前端必须熟悉的10个CSS3属性 (累计阅读 7,718)
    6. 前端开发中Cookie那些事儿 (累计阅读 7,369)
    7. 30个超棒的404错误页面 (累计阅读 7,301)
    8. 字符编码和中文乱码小叙 (累计阅读 7,119)
    9. 如何寻找一个不会让你后悔的PHP开发框架 (累计阅读 6,625)
    10. 使用CSS3开启GPU硬件加速提升网站动画渲染性能 (累计阅读 6,635)