html - 单击带有 alpha channel 的 div

标签 html css dom-events

我正在尝试在提要小部件的底部(在他们在 twitter.com 的主页上)复制 Twitter 的“淡出”层。

我想出的唯一不使用 html5 的方法是在 feed div 上方放置一个绝对定位的 div,并给它一个 alpha channel png,上面有一个白色到透明的渐变。这很容易实现。

现在唯一的问题是出现在透明层下方的 div 不可点击。 关于如何使 div 可点击的任何想法?也许您有另一种方法可以完全复制这种效果?

谢谢!

最佳答案

本文介绍了一种捕获 onclick 事件的方法,并通过暂时隐藏叠加层、重新触发点击,然后再次取消隐藏来处理它。最终用户不应看到隐藏。

Forwarding Mouse Events Through Layers :

  1. The textarea (my masking element) that is positioned over the grid receives mouseover, mousemove, mousedown , mouseup and other events.
  2. The top masking layer is hidden for a moment, so we can figure out what element is below the mask at the event location.
  3. The event is re-fired - this is where the W3 DOM Event model and the simpler Microsoft equivalent come into play.
  4. Start the process again - ready for the next event.

编辑:我认为 Twitter 所做的实际上要简单得多。许多浏览器都实现了从 SVG 借用的 CSS 属性。

.overlay { pointer-events: none; }

目前 Firefox 3.6+、Safari 4 和 Google Chrome 都支持它 - 所以如果您希望它只在这些浏览器上工作,那么这是一个更简单的选项,还有一个额外的优势,那就是它适用于悬停事件也不仅仅是点击事件。

关于html - 单击带有 alpha channel 的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793204/

相关文章:

javascript - Greensock-DrawSVG

html - 为什么 translateX 对于 IE9、IE10 和 IE11 上的固定元素不能按预期工作?

javascript - chrome 中未委托(delegate) click 事件

javascript - 检查事件是否已初始化并且有没有 jQuery 的监听器

javascript通过url传递变量

jquery - 从图 block map 创建碰撞数组

css - 如何使 Flexbox 子项不创建水平滚动

php - 同一页面中的多个帖子部分

html - -Webkit-appearance : menulist, 颜色变化

javascript - 找出一个元素是否是特定元素类型的后代?