У меня возникли проблемы с плавным макетом (с изображениями, использующими максимальную ширину: 100%) в Internet Explorer 8. Проблема возникает, когда я хочу обернуть тег привязки вокруг изображения с гибкой шириной и полей, отступови границы ввязываются.Это немного сложнее, чем вы думаете.
Итак, HTML примерно такой:
<div>
<a class="image-wrap" href="#">
<img alt="something" src="/path_to_image.jpg">
</a>
</div>
И стиль:
img {
max-width: 100%;
display: block;
}
.image-wrap {
padding: 5px;
border: 1px solid black;
display: block;
}
Так что у меня естьявляется плавным изображением, окруженным якорем с отступом и рамкой.
Выше приведено хорошее, если изображение не меньше контейнера .В этом случае отступы и границы якоря расширяются за пределы изображения (заполняя всю ширину контейнера).
Итак, давайте попробуем что-то заставить якорь соответствовать его содержимому:
.image-wrap {
padding: 5px;
border: 1px solid black;
display: inline-block;
}
ОК, теперь окно привязки не становится больше, чем изображение, но тег привязки снова стал не гибким в Firefox, Opera и IE8 +.Но он запускает макет в IE7, поэтому об этом позаботились.Далее:
.image-wrap {
padding: 5px;
border: 1px solid black;
display: inline-block;
max-width: 100%;
}
Теперь якорь снова становится гибким, но он на 12px больше , чем контейнер, когда изображение начинает уменьшаться.Якорь вычисляет ширину на основе изображения, затем добавляет границу и отступ.По какой-то причине Chrome и Safari не делают этого.В любом случае, на помощь пришла альтернативная блочная модель:
.image-wrap {
padding: 5px;
border: 1px solid black;
display: inline-block;
max-width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Теперь она работает как положено в Firefox, Chrome, Safari, Opera, IE7, IE9, но не в IE8 по какой-то причине.Там якорь все еще выходит за пределы контейнера.Я немного озадачен тем, что делать, так как box-sizing: border-box
должен поддерживаться в IE8.
У меня есть страница JSFiddle, которая изолирует проблему http://jsfiddle.net/3gkXU/22/
В качестве последнего средства я мог бы использовать JavaScript, чтобы определить, больше ли якорь, чем его родительский элемент, а затем переключить его на display: block
в предположении, что люди вряд ли изменят размер своего браузера.Я не против, но есть ли здесь решение CSS?