Решение только для CSS
Tomas- Я изменил вашу скрипку в рабочий пример .Я изменил ваш код, чтобы использовать span
внутри тега a
, поскольку недопустимо иметь стандартный элемент уровня блока (div
) во встроенном элементе (тег a
).Задав макет тега a
(я использовал inline-block
), а затем установив position:relative
для этого span
с z-index: -1
, толкает span
«ниже» тега a
и заставляет IE7 распознавать a
снова как активный тег.Ниже приведен модифицированный код, используемый в моей скрипке.Возможно, вы захотите установить более общее имя класса, чем my ie7AFix
(вы, вероятно, также захотите просто настроить IE7 для тех свойств CSS, которые необходимы только для него).Я предполагаю, что вы изменяете 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; }
Обновленная скрипка с добавлением line-height
, чтобы сделать «кросс-браузер», если вы не хотите ориентироваться только на IE7.Я сохранил width
и height
в span
html выше, только потому, что первоначальный вопрос (как gviswanathan, так и Tomas) требовал его.Если вам по какой-то причине вам не нужно устанавливать размеры на span
, а просто пытаетесь сделать двойную границу на изображении, то ответ тридцатки, приведенный в комментарии ниже , намного проще.