CSS 按钮/链接在某些点击时未注册

标签 css button hyperlink click

我想要一个按钮在单击时“按下”。但是,我尝试的方法产生了不良影响 - 按钮上某些位置的一些点击没有被注册。

这个问题与 JavaScript 无关。 我已经链接到下面的 JSFiddle,它使用 JavaScript 单击事件监听器,但这只是为了更好地描述问题。我面临的实际问题与事件监听器无关 - 在不同位置单击时超链接本身不起作用(浏览器不会导航到链接页面,即使 CSS :active 类工作正常,浏览器的行为就像没有点击一样)。

Fat button The fat, depressable button I'm trying to style.

我正在使用的 CSS:

a.fatButton {
    display: inline-block;
    position: relative;
    margin: 8px;
    padding: 16px;
    background: #faa;
    border-radius: 16px;
    box-shadow: 0 8px 0 0 #f88;
    text-decoration: none;
    color: #000;
}
a.fatButton:active {
    top: 8px;
    box-shadow: none;
}

容器 div 中按钮的 HTML:

<div id="linkContainer">
    <a class="fatButton" href="#">Click me</a>
</div>

这是一个更深入地描述问题的 JSFiddle:http://jsfiddle.net/g105b/d3Y9X/

这里是问题的记录:http://youtu.be/N6UfWdbA1Ac

问题是当按钮有任何移动时......这可能是“top”属性的变化 - 如本例所示 - margin-top,负边距底部,translateY,padding- top ...必须有一种方法可以创建这种类型的按钮按下效果而不会出现这个问题吗?

我使用的是用于录制视频的 Chrome 29,但问题在 Firefox 23 中也很明显,尽管“无用区域”位于 Firefox 按钮上的不同位置。

最佳答案

这是因为您正在使用 :active 选择器移动按钮。元素的顶部改变了 8px,这发生在用 Javascript 注册点击事件之前。因此,当您在前 8 个像素内点击时,不会记录点击。

您也可以通过更改 :active 中的 padding-top 值来实现相同的效果。

a.fatButton:active {
    top:8px;
    padding-top:16px;
    box-shadow: none;
}

更新 fiddle :http://jsfiddle.net/NT5e2/

关于CSS 按钮/链接在某些点击时未注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725851/

相关文章:

html - 关于 svg 的流模型的疑问

user-interface - flutter ,按下按钮后如何复制文本?

javascript - 链接到另一个页面上的 javascript 链接

javascript - HTML5 拖放问题

css - 按钮上的脉动边框

如果我在 index.php 之后输入一个参数,CSS 样式就会消失

html - 是否有实际街道地址的链接格式?

reactjs - 在 github 页面上部署后 Gatsby 链接失败

html - 网页高度在移动浏览器中被拉伸(stretch)

javascript - 在 flex-box 中为动态添加的 flex-item 添加一个按钮