我有一些按钮,它们被赋予了“点击深度”(即在:active状态下向下移动几个像素),但它们会导致问题,有时候点击按钮却没有任何反应。
<button>Button</button>
button:active {
margin-top: 5px;
}
我在jsfiddle中展示了问题:http://jsfiddle.net/helenst/vUU55/。
在Chrome中,文本上下各有一条高度与点击深度相等的细线,其上的点击事件不会触发。(例如,尝试在“B”字母上方点击一个像素或两个像素)鼠标按下和松开都会被接收到,但是点击不会触发。
在Firefox和Opera中,按钮顶部也有同样大小的区域,鼠标点击无响应。我认为这更合理,因为鼠标按下在按钮内部,但鼠标松开在按钮外部。如果我在此区域按下并将鼠标拖回按钮内再释放,则会激活点击。
然而,这仍然不完全合理 - 如果我将容器包装在按钮周围(以便所有按钮状态都包含在其中),并在容器上检测事件,则问题仍然存在。
如果我去掉点击深度,一切都好了。
我想我可以让它响应mousedown事件,然后在文档上检测mouseup,这可能可以解决问题 - 但这违反了正常按钮行为,我希望有一个非JavaScript的解决方案。有人能帮忙吗?