javascript - 如果 css div :active moves it,则不会触发 div onclick 事件

标签 javascript html css

我希望标题足够准确以描述我面临的问题。

我有一个div(尝试了多种不同的东西:aspanbutton,都面向同样的问题)当它被点击时,onclick 事件不会触发,即使 css div:active 会被调用。

这似乎是因为在 div:active 中我设置了 top: 6px 以产生“下推”效果。效果看起来不错,只是有时候,如果你点击元素的顶部,或者出于某种原因在中心,div 会出现“移出”的方式,而不是调用 onclick 事件。

我认为一个好的解决方案是将元素包装在另一个 div 中,然后将 onclick 事件附加到该 div。但令我惊讶的是,点击并没有向按钮的顶部或中间触发。

如果我删除 div:active 底部的 top: 6px,按钮工作正常,只是没有相同的“插入”效果.

我发现它有点难以解释,所以这是一个屏幕截图(蓝色区域是不会触发 onclick 的地方):

button that doesn't fire onclick

这是初始尝试的代码:http://jsfiddle.net/RS5Q5/6/

以及将 onclick 监听器移到外部的代码:http://jsfiddle.net/RS5Q5/4/ (onclick 会在 div 的所有地方触发,除了图片上的蓝色部分)

还值得注意的是,中间和底部的蓝色区域在 Firefox 中似乎可以正常点击,但在 Chrome 或 Safari 中却不行。顶部蓝色区域仍然是一个问题。

对这种奇怪的行为有任何修复或解释吗?任何指导都将不胜感激。谢谢。

最佳答案

可能是因为在单击事件期间内容移动时浏览器会感到困惑。这通常是因为用户按下鼠标按钮然后在释放之前进行拖动,但我想如果内容本身移动到点击位置下方也是如此。

如果您使用 mousedown/mouseup 事件而不是单击会发生什么情况?

关于javascript - 如果 css div :active moves it,则不会触发 div onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732970/

相关文章:

html - 如何在css中夹入一个盒子?

javascript - 在带有文本的 span 之后创建内容可编辑的 div

css - 部分后面的子菜单

javascript - Jquery - 在 3 个 div 上循环运行 css 规则,每 N 秒一次

javascript - 原型(prototype)声明的函数不是函数

html - 焦点输入字段被虚拟键盘遮挡

div 项包装器中的 CSS3 选择器最后类型

javascript - React Native隐藏导航栏元素

javascript - TypeError : (intermediate value)(. ..) 在自调用函数中未定义

html - <div> 元素中不显示背景图片 - CSS/HTML