在IE中绝对定位锚标记(没有文本)不可点击

我有两个定位绝对位于图像的顶部,链接可以在其他浏览器(Chrome浏览器,FF,Safari)点击,但不是在IE浏览器(迄今在8和9testing)

奇怪的是,如果我给链接的background-color他们是可点击的,但是如果background-color设置为transparent这是我想要的 ),他们不再是可点击的,我也尝试设置zoom:1但没有运气。 我猜IE中的hasLayout位用IE 8/9去掉了,所以现在猜测zoom对于这种问题并不重要。

任何想法,使这些链接显示在IE 8/9透明BG?

这里是我一直在使用的小提琴: jsFiddle的例子

我有以下的HTML布局:

 <div id="content"> <img src="http://placehold.it/724x300" width="724" height="300" alt="woot" /> <div id="countdown"></div> <a id="link1" href="http://www.stackoverflow.com" title="link1"></a> <a id="link2" href="http://www.stackoverflow.com" title="link2"></a> </div> 

和CSS:

 body {text-align:center;} #content {position:relative; width:724px; height:300px; margin:0 auto;} #countdown {position:absolute; width:650px; height:110px; top:100px; left:30px; background-color:blue;} #link1 {position:absolute; width:520px; height:35px; bottom:20px; left:0;} #link2 {position:absolute; width:200px; height:35px; bottom:20px; right:0;} 

我之前有过这个确切的问题,而且总是让我感到恼火。 我不知道为什么会发生这种情况,但是我总是创build一个1像素,1像素的透明PNG(或GIF),并在后台声明中使用它,如下所示:

 a { background: url("/path/to/image.png") 0 0 repeat; } 

希望这可以帮助。

PS – 不要指定任何实际的背景颜色。 只要使用上面的例子,它应该工作。

除此之外,试着将你的锚点标记设置为块来显示,也许还要在其中插入一个不间断的空格(因为此时它们是空的,可能会跳过IE):

 a { display: block; background: url("/path/to/image.png") 0 0 repeat; } <a href="#">&nbsp;</a> 

你可以使用提到的background-image技巧。 如果您不想为此使用透明图片,只需在图片url中使用未知的scheme或about:blank

 a { background-image: url("iehack:///"); } 

要么

 a { background-image: url("about:blank"); } 

至less在IE 8 + 9(我testing过的唯一的IE)和Firefox和Chrome的当前版本中,这种方法是有效的。 它仍然是有效的CSS,并没有引起额外的stream量。 使用jQuery时,第一个“黑客”可能会给Chrome(也可能是其他)带来JS错误。 后者只是(但肯定)在Chrome中由于about:blank文件的MIMEtypes错误而给出了一个MIME-Type警告。

移植了我之前发布的评论。

稍长,但仍然没有stream量,基地64编码透明GIF:

 background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICR‌​AEAOw==') 

这有它自己的优点/缺点,但可以是有用的。 也:

 background-color: rgba(0,0,0,0) 

我最近用过这个

@ tw16的评论提到invisible让我思考opacity

结合IE的filter:alpha(opacity=0)background-color:#fff (或任何颜色)似乎是一个很好的解决scheme。 testing和工作在IE 7-9(6不使用不透明度filter出于某种原因,但我不需要支持6,所以这将工作)

1×1图片解决scheme具有全球影响力,因此我将把支票交给他。

感谢您的答案。

我有同样的问题。 我的工作解决scheme是添加一个边框到适当的锚点。 像下面的例子。 一个好处是,你不需要额外的图像。

 a { border-right: 1px solid transparent } 

如果没有任何内容,IE有一个令人厌恶的习惯,就是不会像预期的那样工作。 要解决这个问题,请给每个链接一个&nbsp; 为内容。

另一个要尝试的是设置display: block; 在这些链接上,IE将它们作为块级元素而不是内联元素。 这也可以帮助你需要的链接是空的。