微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有填充和CSS样式活动的HTML链接不起作用

带有填充和CSS样式的 HTML链接无法在Google Chrome,Apple Safari,Opera,Mozilla Firefox中使用.但是,它适用于Internet Explorer 8.

这是一个示例代码.尝试单击堆栈 – 链接不起作用,单击溢出 – 链接工作.我的意思是工作 – 导航到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="https://stackoverflow.com/">StackOverflow</a>
        </div>
    </body>
</html>

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

编辑2:如果你改变:active to:hover,那么所有浏览器中的一切都按预期工作 – 点击发生,浏览器导航到stackoverflow.com

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

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

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

解决方法

使用填充,文本会从您单击的位置移开.这是你的代码
http://jsfiddle.net/ctrlfrk/3KsRx/

按住“堆栈”上的鼠标按钮,您将看到文本远离鼠标下方.

你想要达到什么目的?这是应该的方式.如果Internet Explorer跟随链接,那么它是错误的.

[编辑]
澄清:

这里真正的问题是,如果mousedown事件目标与mouseup事件目标匹配,则“click”事件似乎才会触发.
当您单击示例中的文本时,mousedown目标是一个文本节点,它是锚标记的子节点.
然后,此文本节点移开,因此mouseup事件目标只是锚标记本身.

使用:hover,文本节点在您单击之前移开,因此mousedown事件目标是锚标记,mouseup事件也是锚标记,因此遵循链接.

[/编辑]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。