2010-11-26 38 views
1

从Internet Explorer火狐,Chrome,歌剧,Safari浏览器的行为不同。见我的问题: HTML link with padding and CSS style active does not work我在哪里报告错误 - Firefox或Internet Explorer?

这是不确定的行为?或者我需要报告一个错误。如果以后,那么哪个浏览器做对了?

下面是测试代码:

<!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{ 
       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> 

回答

3

我认为IE是做错了。 a:当鼠标按钮关闭时active激活,但在鼠标按钮重新启动之前href不会关闭。

伪代码:

onmousedown(e) { 
    setCssAsActive(); 
} 
onmouseup(e) { 
    activateHref(); 
} 

如果鼠标上升的元素之外,没有什么happends。尝试点击一个链接,然后将鼠标拖离链接,然后释放该按钮。什么都不应该发生。

这就是你的代码中发生的事情。当您点击堆栈文本时,链接会从指针移开,当您释放按钮时,链接不再位于指针之下。它在发布时间后退,但后来太晚了。

因此,我认为IE是做错了。

0

主要的问题,我认为是在IE盒模型,如下http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug

为纽带陈述说IE包括在框中填充,这就是为什么链接的作品在IE浏览器,但没有任何其他的浏览器,这可以通过在上面的示例中将填充更改为边距来证明,或者这里是http://jsfiddle.net/S5dGw/

尽管大多数(包括我自己)都会说这是IE错误,但有人会说这是W3C问题。 http://www.crossbrowser.net/82/internet-explorer-box-model-is-not-a-bug/scoff

不用担心时,完全支持CSS3(它在遥远的未来:)),这将有box-sizing属性,将解决这个问题,见下图:

http://www.w3.org/TR/css3-ui/#box-sizing