Знания накапливаются с практикой. Вначале решение какой-то задачи кажется не возможным, потом решение может даже прийти само собой, но чаще конечно решения перенимаются. Перенимайте ;)
Ниже приведена задача и ее решение, раньше казалось не осуществимым, хотя так оно и было, ведь FF2 не поддерживал свойство display:inline-block, потом еще долго я не использовала данный метод.
Задача
Надо сделать верстку блоков с фиксированной шириной, но не с фиксированной высотой, + резиновая верстка, т.е. при разных значениях разрешения экрана, количество блоков в ряду будет изменяться.
Решение
Html
<div class="item"> <a href="#"><img src="img.jpg" width="87" height="85" alt="" /></a> текст </div> <div class="item"> <a href="#"><img src="img.jpg" width="87" height="85" alt="" /></a> текст </div>
А в CSS пропишем следующее
.item {display:inline-block; width:130px; padding:22px 33px 17px 0; vertical-align:top;}
Т.е. наши блоки превращаются в блок, ведущий себя как строчный элемент. Но в IE6 и IE7 результат будет иной, поэтому для этих браузеров надо прописать
.item {display:inline;}
Рабочий пример во вложении
Прикрепленный файл: 85_www.rar (3.47 Kb)
Полезный метод.
Хотя задача достаточно редкая, обычно размеры таких блоков делают одинаковыми.
Если требуется поддержка ИЕ7 то этот метод не подойдет
почему? работает, проверенно не на одном сайте, только надо хак прописать, он указан выше
Да, действительно. Был не внимателен. Беру на заметку, спасибо!
Маленькое уточнение насчет IE7 (и ниже): нужный эффект в нем достигается благодаря комбинации display:inline и «особой IEшной магии» под названием hasLayout (подробнее о нем). В данном примере hasLayout включается благодаря наличию width. А для изначально инлайновых элементов (типа span или i) display:inline-block в старых IE работает сразу, без костылей.
И еще важный момент, который нужно учитывать при работе с инлайн-блоками — пробелы между тегами, которые становятся значимыми и дают отступы, как между словами в обычном тексте. С этим можно бороться средствами CSS (чаще всего встречаются «обнуление» font-size контейнера и отрицательные маргины, можно использовать отрицательный word-spacing, но он требует костылей в Webkit-браузерах), но единственный пуленепробиваемый способ убрать эти отступы — физически удалить пробелы между тегами из кода.
а я делаю тоже самое только вот так display: inline-block; zoom: 1; *display: inline;