具有填充和 CSS 样式的 HTML 链接不起作用

标签 html css anchor padding

具有填充和 CSS 样式的 HTML 链接在 Google Chrome、Apple Safari、Opera、Mozilla Firefox 中不起作用。但是,它适用于 Internet Explorer 8。

这是一个示例代码。尝试单击 Stack - 链接不起作用,单击 Overflow - 链接有效。我的意思是作品 - 导航到 StackOverflow 网站。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>css active padding href problem</title>
        <style type="text/css">
            a{
                display: inline-block;
                background:#CCC;
                border:1px solid #666;
                padding:0 35px 0 0;
            }
            a:active{
                padding:0 0 0 35px;
            }
        </style>
    </head>
    <body>
        <div>
            <p>Click on <i>Stack</i> - href does not work.
               Click on <i>Overflow</i> - href works.
               All browsers are affected.
               Except IE.</p>
            <a href="http://stackoverflow.com/">StackOverflow</a>
        </div>
    </body>
</html>

为什么它在大多数浏览器中不起作用?

编辑 2: 如果您将 :active 更改为 :hover,那么在所有浏览器中一切都会按预期工作 - 点击发生并且浏览器导航到 stackoverflow.com

编辑 3: 为了证明可以点击填充区域,您可以将样式更改为:

<style type="text/css">
    a{
        padding:0 0 0 35px;
    }
</style>

如果链接像有人提到的那样“移动”,那么为什么可以点击已经“移动”的链接?

最佳答案

我找到了解决办法! http://jsfiddle.net/rydl/Yu6vp/3/

David 是对的,问题是由移动的文本节点引起的。所以解决方案必须完全防止文本节点被点击。我使用 anchor 的 :after-pseudo-element 来覆盖整个按钮,同时不可见:

a:after {
  position: absolute;
  top: 0;
  left: 0;
  content: ' ';
  height: 100%;
  width: 100%;
}

关于具有填充和 CSS 样式的 HTML 链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280522/

相关文章:

html - CSS 子选择器的优先级高于类选择器?

css - 我怎样才能提高这个的可读性

HTML/CSS : How to show a background picture that has 100% width and 100% height below a header

css - 选择正文中的最后一个 iFrame

javascript - 链接为带有 name 属性的提交按钮

html - 将 POST 方法与 HTML anchor 标记一起使用

javascript - 使用 location.href ="#_ElementId_"时如何忽略 base href?

javascript - 如何检查窗口是否从 window.open() 实例化

python - 从 .txt 文件中删除 html 和 uuencode

javascript - 数字输入框的逗号分隔步骤