На данном примере мы рассмотрим, как реализовать запрет на обтекание определенного элемента, к которому применено правило float. Нашей задачей является создание анонса новости. Макет выглядит следующим образом:

Поскольку мы уже сошлись на отказе от таблиц в пользу семантики, нам потребуется минимум html-кода:
<div class="announce">
<img src="pic.gif" alt="" />
<h2><a href="#">Россияне помогли</a></h2>
<p>Полиция турецкого города Измир сообщила об аресте 17 участников группировки, занимавшейся мошенничеством и рассылкой вирусов в Сети.
Арест произошел после того, как местные полицейские выяснили, что трое русских хакеров отправили в общей сложности миллион писем с
вирусами и получили доступ к банковским счетам многих жителей Турции.</p>
</div>
Зададим картинке float, чтобы прижать ее налево и соответствующие макету поля:
.announce img {
float:left;
margin:0 10px 10px 0;
}
К сожалению, текст обтекает картинку, а это совсем не то, что нам требуется по условию задачи. Чтобы запретить обтекание применим дополнительные стили к тексту:
style.css:
.announce p {
overflow:hidden;
}
ie.css:
.announce p {
zoom:1; /* Для IE 7 */
}
* HTML .announce p {
height:1%; /* Для IE 5,6 */
}
Voila!
Внимательный читатель безусловно заметит, что для реализации задачи мы воспользовались правилами, указывающими Explorer’у на hasLayout. Таким образов еще раз показав их полезность.
Материалы для изучения:
Serhiy // 26 августа 2008 в 14:40
zoom:1 работает и для ИЕ5-6
Flack // 26 августа 2008 в 14:42
Я в этом деле старовер.
Николай Громов (nicothin) // 26 августа 2008 в 16:36
не валидно.
я – в деле валидности – нововер )))
(все, что не валидно – фтопку)
Flack // 26 августа 2008 в 16:38
*html вполне валиден
Azadi // 26 августа 2008 в 17:41
*HTML не валиден, но если пользоваться Condition Comments для IE то все будет Ok.
P.S. С пробуждением! :)
Flack // 28 августа 2008 в 14:06
Azadi, проверяйте свои слова для начала.
http://jigsaw.w3.org/css-validator/validator (level 2.1)
Valid CSS information:
* HTML {
width : auto;
}
Del'ka // 29 августа 2008 в 20:57
Спасибо за overflow:hidden как замену display:table в данном случае. Интерестно)
Игорь // 28 мая 2009 в 02:37
Может у меня уже от 5-ти часовой верстки голова не работает, но IE 7 скушал эту проблему и без:
.announce p {
zoom:1; /* Для IE 7 */
}
Все работает… Может это лишнее?
Flack // 28 мая 2009 в 07:28
Если работает, то лишнее :)