Свойство clear в CSS. Как избавиться от ненужных элементов? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 28 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Свойство clear в CSS. Как избавиться от ненужных элементов?
Сообщение Добавлено: 14 Февраль 2009, 07:01:49 
Я часто использую: <div style="clear: both"></div> после Float элементов.
Какая-то не семантическая заглушка.

Гуру CSS подскажите, что я не так делаю?

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 14 Февраль 2009, 11:56:31 
AlexShop, гуру CSS дружно говорят, что CSS2 не позволяет обойтись без этого костыля.
Panya
новый человек
0
Сообщения: 2
Зарегистрирован: 30.11.08
Сообщение Добавлено: 14 Февраль 2009, 13:22:37 

Crazy писал(а):
AlexShop, гуру CSS дружно говорят, что CSS2 не позволяет обойтись без этого костыля.


Неправда ваша. Можно сделать по разному. Основные методы это overflow:hidden родительскому элементу и hasLayout дать для IE7 и ниже. И способ, называемый easyclearing:
Код:
.clearfix:after {
  content:'.';
  display:block;
  clear:both;
  font:0/0 a;
  height:0;
  visibility:hidden;
}


И для IE7 и ниже:
Код:
.clearfix {
  display:inline-block;
  height:1%;
}

Дальше просто добавлять класс clearfix для родительского элемента.
А вообще, вот хорошая статья http://www.ejeliot.com/blog/59 с сравнением различных методов.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 14 Февраль 2009, 13:41:19 

Panya писал(а):
Неправда ваша.



И по приведенной ссылке, и в книжках я вижу кучу разрозненных приемов, ориентированных на конкретные случаи и ограниченных проблемами совместимости браузеров. Так что на счет "неправда ваша" -- лечи, please, кого-нибудь другого.

А пока факт остается фактом: CSS2 есть уродство, непригодное для полноценной семантической верстки и для эффективной работы требующее применение костылей. Причем различные приемы, основанные на хитром сочетании глюков различных браузеров, лично я считаю гораздо большим злом, что вставку в код означенного несемантического div'а. Хотя бы потому, что div будет работать и через 5 лет, а все эти хитрожопые выверты накрываются медным тазом при выходе следующих версий.
tentoys Муж.
постоянный участник
121
Сообщения: 2940
Зарегистрирован: 06.08.02
Откуда: МКАДонутряк
Сообщение Добавлено: 14 Февраль 2009, 17:14:05 

Panya писал(а):

Crazy писал(а):
AlexShop, гуру CSS дружно говорят, что CSS2 не позволяет обойтись без этого костыля.


Неправда ваша. Можно сделать по разному. Основные методы это overflow:hidden родительскому элементу и hasLayout дать для IE7 и ниже.


кроме ИЕ7 существуют ли другие браузеры?
AlexShop, работоспособно, стало быть имеет право на жизнь, Crazy прав.

_________________
Keep in touch. Andrey Alexeev.
tentoys Муж.
постоянный участник
121
Сообщения: 2940
Зарегистрирован: 06.08.02
Откуда: МКАДонутряк
Сообщение Добавлено: 14 Февраль 2009, 17:54:49 

Panya писал(а):
А вообще, вот хорошая статья http://www.ejeliot.com/blog/59 с сравнением различных методов.


да, кстати, о "хорошей" статье. На том же сайте посмотрите сравнительную таблицу, показывающую "which rules cause a container to clear its floats". на этом закончим споры.

_________________
Keep in touch. Andrey Alexeev.
Panya
новый человек
0
Сообщения: 2
Зарегистрирован: 30.11.08
Сообщение Добавлено: 14 Февраль 2009, 21:39:25 

Crazy писал(а):

Panya писал(а):
Неправда ваша.



И по приведенной ссылке, и в книжках я вижу кучу разрозненных приемов, ориентированных на конкретные случаи и ограниченных проблемами совместимости браузеров. Так что на счет "неправда ваша" -- лечи, 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> в разметке.
tentoys Муж.
постоянный участник
121
Сообщения: 2940
Зарегистрирован: 06.08.02
Откуда: МКАДонутряк
Сообщение Добавлено: 14 Февраль 2009, 21:56:23 

Panya писал(а):
но сочетание перечисленных мной выше способов в 99% случаев позволит вообще избавиться от <div style="clear: both"></div> в разметке.


А зачем? Зачем эти перечисленные способы? Если даже запись в css clear:both во много раз короче предлагаемой Вами. Ради чего, ради включения не всеми поддерживаемой конструкции, хаков и т.д., ради "100%-ной семантики"?
:glasses:

_________________
Keep in touch. Andrey Alexeev.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 14 Февраль 2009, 22:09:06 
Panya, после всех этих "не совсем тот", "для нормальных браузеров" и "довольно безопасные" все сказанное вами -- разговоры в пользу бедных.

Мне сегодня в демагогических дискуссиях участвовать неинтересно. Попробуйте месяца через два.
tentoys Муж.
постоянный участник
121
Сообщения: 2940
Зарегистрирован: 06.08.02
Откуда: МКАДонутряк
Сообщение Добавлено: 14 Февраль 2009, 22:28:32 

Crazy писал(а):
Попробуйте месяца через два.


а что случится месяца через два?

_________________
Keep in touch. Andrey Alexeev.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 14 Февраль 2009, 23:16:56 
оффтопик:
tentoys, моя страсть дискутировать с демагогами обычно обостряется -- как и все и у всех -- по весне.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов?
Сообщение Добавлено: 15 Февраль 2009, 00:55:50 
А можно я уйду немного из темы?
Недавно мне понадобилось сделать float по центру. Перерыл гугл и понял почему этого не осуществили:
неизвестно как текст в этом случае должен обтекать картинку (хотя в графических программах это давно уже сделано).

Но дело не в этом. Float по центру я таки сделал с помощью JavaScript.

А потом подумал: все равно мои сайты без JavaScript так и так не работают.
Почему бы не делать верстку с JavaScript? Даже поискал нет ли каких фраймворков.

Кто что думает насчет использования JavaScript в верстке?

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 15 Февраль 2009, 01:04:30 

AlexShop писал(а):
Кто что думает насчет использования JavaScript в верстке?



Положительно. Начиная с времен, когда у Netscape при выключенном JavaScript отключалась поддержка CSS. :)

Только не забываем про graceful degradation.
[cyber]form Муж.
участник
60
Сообщения: 1523
Зарегистрирован: 26.10.05
Откуда: Латвия/Лиепая
Сообщение Добавлено: 15 Февраль 2009, 22:39:55 

AlexShop писал(а):
А можно я уйду немного из темы?
Недавно мне понадобилось сделать float по центру. Перерыл гугл и понял почему этого не осуществили:
неизвестно как текст в этом случае должен обтекать картинку (хотя в графических программах это давно уже сделано).



а чем контейнер inline-block, внутри элементы с float плох?

_________________
Жаль, что глупость не приносит болевых ощущений.
Антон Шандор ЛаВей
karamba Муж.
старожил
209
Сообщения: 6498
Зарегистрирован: 17.08.05
Откуда: Киев. А шо?
Сообщение Добавлено: 16 Февраль 2009, 00:21:10 
шо, опять?!..

_________________
клетчатый!
Podveg Razvedcheka Муж.
участник
7
Сообщения: 1303
Зарегистрирован: 21.01.08
Откуда: г. Казань
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов?
Сообщение Добавлено: 16 Февраль 2009, 14:45:27 

AlexShop писал(а):
Кто что думает насчет использования JavaScript в верстке?



Я изучаю jquery. :chih:
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 22 Февраль 2009, 03:57:54 
Crazy, {overflow:hidden; zoom:1; } для обрамляющего блока и всё пучком :)
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 23 Февраль 2009, 09:42:49 
.talisman,
overflow:hidden не подходит для всех ситуаций.

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 24 Февраль 2009, 14:20:55 
AlexShop, фик его знает. я не теоретик, я практик. за месяц минимум 10 сайтов верстаю, причем не самых простых. и данный способ всегда срабатывает без каких-либо побочных эффектов. IE6+, FF, Opera8+, Safari, Chrome.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов?
Сообщение Добавлено: 25 Февраль 2009, 02:37:25 
.talisman,
не в браузерах дело. :)

overflow:hidden - что делает? Скрывает контент который вылез за границы блока. А если надо иметь: overflow:visible или overflow:scroll?
Поэтому и написал: не подходит для всех ситуаций.

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 25 Февраль 2009, 03:53:49 
AlexShop, все верно :)
просто нужно быть гибче. например, завернуть в дополнительный блок :)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 25 Февраль 2009, 09:52:25 
.talisman, и какая же будет семантика у этого "дополнительного блока"? :)
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 25 Февраль 2009, 21:55:23 
Crazy, придумаем :wink:
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Re: Свойство clear в CSS. Как избавиться от ненужных элементов?
Сообщение Добавлено: 20 Март 2009, 04:02:59 
Ну что коллеги! Поздравляю всех с официальным выходом IE 8 и прохождением ACID2! :beer:

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 20 Март 2009, 09:19:03 
AlexShop, обратил внимание: что при установке он предлагает режим имитации старых версий? :) Так что радоваться пока рано: мы получили еще ДВА браузера с двумя разными наборами взглюков.
jegor Муж.
новый человек
3
Сообщения: 61
Зарегистрирован: 13.09.09
Откуда: Эстония
Сообщение Добавлено: 23 Сентябрь 2009, 11:22:17 
Ох уж эти ослы... интересно, ms когда-нибудь создаст что-нибудь не нуждающееся в "костылях"… Все их новые версии такие же убогие, как и старые.
Алефъ Муж.
постоянный участник
20
Сообщения: 2579
Зарегистрирован: 07.08.07
Сообщение Добавлено: 23 Сентябрь 2009, 11:45:54 
jegor, осенние обострение также обычно, как и весенние.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 23 Сентябрь 2009, 12:26:26 
jegor, советую осознать, что хотя они и неправы, тебе все равно придется с этим жить. :chih:
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 28 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100