AlexShop, гуру CSS дружно говорят, что CSS2 не позволяет обойтись без этого костыля.
Неправда ваша. Можно сделать по разному. Основные методы это overflow:hidden родительскому элементу и hasLayout дать для IE7 и ниже. И способ, называемый easyclearing:
Дальше просто добавлять класс clearfix для родительского элемента. А вообще, вот хорошая статья http://www.ejeliot.com/blog/59 с сравнением различных методов.
И по приведенной ссылке, и в книжках я вижу кучу разрозненных приемов, ориентированных на конкретные случаи и ограниченных проблемами совместимости браузеров. Так что на счет "неправда ваша" -- лечи, please, кого-нибудь другого.
А пока факт остается фактом: CSS2 есть уродство, непригодное для полноценной семантической верстки и для эффективной работы требующее применение костылей. Причем различные приемы, основанные на хитром сочетании глюков различных браузеров, лично я считаю гораздо большим злом, что вставку в код означенного несемантического div'а. Хотя бы потому, что div будет работать и через 5 лет, а все эти хитрожопые выверты накрываются медным тазом при выходе следующих версий.
да, кстати, о "хорошей" статье. На том же сайте посмотрите сравнительную таблицу, показывающую "which rules cause a container to clear its floats". на этом закончим споры.
И по приведенной ссылке, и в книжках я вижу кучу разрозненных приемов, ориентированных на конкретные случаи и ограниченных проблемами совместимости браузеров. Так что на счет "неправда ваша" -- лечи, please, кого-нибудь другого.
А пока факт остается фактом: CSS2 есть уродство, непригодное для полноценной семантической верстки и для эффективной работы требующее применение костылей. Причем различные приемы, основанные на хитром сочетании глюков различных браузеров, лично я считаю гораздо большим злом, что вставку в код означенного несемантического div'а. Хотя бы потому, что div будет работать и через 5 лет, а все эти хитрожопые выверты накрываются медным тазом при выходе следующих версий.
Ладно, давайте разберем. Вы сказали, что при помощи CSS нельзя избавиться от отдельного элемента с clear. Но это не так. Да, я согласен, что overflow:hidden дает не совсем тот же эффект (это по сути просто создание нового контекста форматирования) и у этого метода есть ограничения (содержимое блока с overflow:hidden будет обрезаться, при выхождении за границы блока). НО, у easyclearing в варианте для НОРМАЛЬНЫХ браузеров (генерируемое содержимое через :after), нет ВООБЩЕ никаких отличий от "классического" метода. Т. е. такая возможность в CSS2 есть. Теперь, немного о хаках для IE. Во-первых, это довольно безопасные хаки (просто установка hasLayout) и, при условии, что они будут даны только отдельным версиям экспрорера, через Conditional Comments они совершенно безвредны (кстати, IE8 поддерживает generated content и псевдоэлементы :before и :after, так что ему можно будет отдавать нормальный CSS2 вариант, предусмотренный спецификацией). Во-вторых, какое вообще отношение имеют баги конкретных бораузеров (IE7-) к вашему заявлению о том, что CSS2 это не предусматривает? Это IE7- не поддерживает полноценно CSS2.1, поэтому ОН виноват.
tentoys писал(а):
Panya писал(а):
Crazy писал(а):
AlexShop, гуру CSS дружно говорят, что CSS2 не позволяет обойтись без этого костыля.
Неправда ваша. Можно сделать по разному. Основные методы это overflow:hidden родительскому элементу и hasLayout дать для IE7 и ниже.
кроме ИЕ7 существуют ли другие браузеры? AlexShop, работоспособно, стало быть имеет право на жизнь, Crazy прав.
Cуществуют. Для них как раз overflow:hidden (ну или auto). Это для IE7- нужно давать еще и hasLayout. Это, кстати, тоже вариант, предусмотренный CSS, но, как верно заметили, он имеет ограничения и делает не совсем то. Я и не настаиваю на этом варианте, нужно смотреть по ситуации, но сочетание перечисленных мной выше способов в 99% случаев позволит вообще избавиться от <div style="clear: both"></div> в разметке.
но сочетание перечисленных мной выше способов в 99% случаев позволит вообще избавиться от <div style="clear: both"></div> в разметке.
А зачем? Зачем эти перечисленные способы? Если даже запись в css clear:both во много раз короче предлагаемой Вами. Ради чего, ради включения не всеми поддерживаемой конструкции, хаков и т.д., ради "100%-ной семантики"?
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов? Добавлено: 15 Февраль 2009, 00:55:50
А можно я уйду немного из темы? Недавно мне понадобилось сделать float по центру. Перерыл гугл и понял почему этого не осуществили: неизвестно как текст в этом случае должен обтекать картинку (хотя в графических программах это давно уже сделано).
Но дело не в этом. Float по центру я таки сделал с помощью JavaScript.
А потом подумал: все равно мои сайты без JavaScript так и так не работают. Почему бы не делать верстку с JavaScript? Даже поискал нет ли каких фраймворков.
Кто что думает насчет использования JavaScript в верстке?
_________________ Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
А можно я уйду немного из темы? Недавно мне понадобилось сделать float по центру. Перерыл гугл и понял почему этого не осуществили: неизвестно как текст в этом случае должен обтекать картинку (хотя в графических программах это давно уже сделано).
а чем контейнер inline-block, внутри элементы с float плох?
_________________ Жаль, что глупость не приносит болевых ощущений.
Антон Шандор ЛаВей
AlexShop, фик его знает. я не теоретик, я практик. за месяц минимум 10 сайтов верстаю, причем не самых простых. и данный способ всегда срабатывает без каких-либо побочных эффектов. IE6+, FF, Opera8+, Safari, Chrome.
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов? Добавлено: 25 Февраль 2009, 02:37:25
.talisman, не в браузерах дело.
overflow:hidden - что делает? Скрывает контент который вылез за границы блока. А если надо иметь: overflow:visible или overflow:scroll? Поэтому и написал: не подходит для всех ситуаций.
_________________ Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
AlexShop, обратил внимание: что при установке он предлагает режим имитации старых версий? Так что радоваться пока рано: мы получили еще ДВА браузера с двумя разными наборами взглюков.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.