Html结构
<a>
<span> <!-- Span has width & height -->
<img>
</span>
<span> Some text <span>
</a>
锚点只能在IE7中点击,我知道问题是因为hasLayout而发生的,如果我们删除高度&amp;跨度的宽度,它将正常工作。
但我需要让它能够消除身高和身高。宽度。
编辑:您可以在此处举例说明:http://jsfiddle.net/rxcAb
答案 0 :(得分:13)
托马斯 - I modified your fiddle into a working example。我将代码更改为在span
代码中使用a
,因为内联元素(div
中的标准块级元素(a
)无效标签)。提供a
代码布局(我使用inline-block
),然后使用position:relative
在span
上设置z-index: -1
会推送下面的span
“a
标记并使IE7再次将a
标记识别为有效。下面是我小提琴中使用的修改后的代码。您可能希望设置一个比我的ie7AFix
更通用的类名(您可能也希望仅针对那些仅为其所需的CSS属性定位IE7)。我假设您通过图像改变width
和height
,因此您将其作为内联样式。
<强> HTML 强>
<a href="http://www.google.com/" class="ie7AFix">
<span style="width:222px; height: 150px;">
<img src="http://artax.karlin.mff.cuni.cz/~ttel5535/aviff/photos/scaled/P000137_220x148.jpg" style="width:220px; height: 148px;">
</span>
</a>
<强> CSS 强>
a.ie7AFix {
display: inline-block; /*needs to set hasLayout; zoom: 1, etc.*/
}
.ie7AFix span {
border: solid #666 4px;
display: block;
position: relative;
z-index: -1;
line-height: 0; /*this made it "cross browser" eliminating extra bottom space*/
}
.ie7AFix img { border: 1px solid red; }
Updated Fiddle ,添加了line-height
以制作“跨浏览器”,如果您不想仅针对IE7。我将width
和height
保留在上面的span
html中,只是因为原始问题(由gviswanathan和Tomas都提出)要求它。如果由于某种原因您不需要在span
上设置尺寸,而只是尝试在图像上设置双边框,那么thirtydot's answer given in the comment's below就会简单得多。
答案 1 :(得分:5)
使用jQuery,以下将强制所有链接工作,并具有“指针”光标:
$(document).ready(function () {
$('a')
.click(function () {
window.location = $(this).attr('href');
})
.hover(function () {
$(this).css('cursor', 'pointer');
});
});
我已经在兼容性视图模式下使用IE8测试了这个模拟IE7,但不能保证它将自己用于IE7。
您可能希望更有选择性地应用它 - 我怀疑,这可能会降低旧版浏览器的性能 - 在这种情况下,将类(如<a href='myClass'>
)应用于所有被破坏的链接方式,只需将$('a')
更改为$('.myClass')
答案 2 :(得分:1)
您是否尝试过使用HTML5垫片?它对hasLayout引起的问题有很大帮助。
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
答案 3 :(得分:1)
从IMG中取出SPAN。 IMG元素可以像任何其他元素一样使用类来设置样式,因此您不需要在它周围使用。
答案 4 :(得分:0)
它不可能在IE7中实现并仍然保持跨度的宽度,如果你可以展示你想要在JS小提琴中实现的目标,也许我们可以提供帮助,找到解决方法,例如这只是一个猜测,将宽度放在anchor
上并加上一些填充将有助于创建一个完全可点击的区域,并且仍然可以限制“标题”跨度,如果这就是你所追求的......
示例解决方法而非修复
<强> CSS:强>
a {
display: inline-block;
background: #ff0;
max-width: 50px;
padding: 10px;
text-align: center;
}
img {border: 0; display: block; margin-bottom: 10px;}
span {line-height: 1.5;}
HTML:
<a href="#">
<img width="50" height="50" src="http://dummyimage.com/50x50/000/fff" alt="">
<span>Some text and even longer</span>
</a>
以上只是一个想法,如果不是你想要的,请提供样本jsfiddle.net
答案 5 :(得分:0)
将以下CSS规则提供给a元素:
{
display:block;
overflow:hidden;
}
答案 6 :(得分:0)
可能是因为您没有在href="#"
TAG中定义<a>
,所以请将href="#"
放在<a>
标签内。写得像这样:
<a href="#">
<span> <!-- Span has width & height -->
<img>
</span>
<span> Some text <span>
</a>
答案 7 :(得分:0)
只需在Div或Span中包含锚标记即可。它在IE7中工作。
这种方式错了..?
答案 8 :(得分:0)
从您的帖子中我想你想要一个带有span信息文字的可点击图片!!我希望这会对你有所帮助;)
http://jsfiddle.net/ajinkyax/v5KH5/3/
<a href="http://www.google.com/" class="imgLink">
<img src="http://artax.karlin.mff.cuni.cz/~ttel5535/aviff/photos/scaled/P000137_220x148.jpg" />
<span>Info text about image</span> </a>
CSS:
.imgLink {display: block; width: 200px; text-align: center;}
答案 9 :(得分:0)
请参阅小提琴代码和演示
小提琴:http://jsfiddle.net/rxcAb/29/
演示:http://jsfiddle.net/rxcAb/29/embedded/result/
在IE7,IE8,FF,Chrome,Safari中完美运作。
代码无变化:见下文
<a href=http://www.google.com/>
<div class="gal_image" style="width:222px; height: 150px;">
<img src="http://artax.karlin.mff.cuni.cz/~ttel5535/aviff/photos/scaled/P000137_220x148.jpg" style="width:220px; height: 148px;">
</div>
</a>
答案 10 :(得分:0)
一种简单的方法是:
<p>
<span><img></span>
<span> Some text <span>
<a></a>
<p>
p { display: block; width: 100px; height: 100px; position: relative; }
a { display: block; width: 100px; height: 100px; position: absolute; top: 0; left: 0; background: #fff; opacity: .0; filter: alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }`
答案 11 :(得分:0)
如果你有类似的话:
<a name="link1" href="somelink.php">
<div class="somediv"><img src="image.jpg" class="somestyle"></div>
</a>
只需将样式属性添加到锚点,如下所示:
<a name="link1" href="somelink.php" style="display: block; overflow: hidden;">
这将使div及其内部的所有内容在IE7 +和firefox&amp;中可点击铬。