Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Некорректно, как мне кажется, работает свойство clear

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 26 Февраля, 2012 - 03:20:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




есть верстка:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <style>
  3. #left_column
  4. {
  5.    float:left;
  6.    width:100px;
  7. }
  8.  
  9. #right_column
  10. {
  11.     margin:0 0 0 100px;
  12. }
  13.  
  14. .menu li
  15. {
  16.     float:left;
  17. }
  18.  
  19. .clear
  20. {
  21.     clear:both;
  22.     float:none !important;
  23. }
  24. </style>
  25.  
  26.  
  27. <div id="left_column">
  28.  
  29. </div>
  30. <div id="right_column">
  31.     <ul class="menu">
  32.          <li>
  33.          </li>
  34.          <li>
  35.          </li>
  36.          <li class="clear">
  37.          </li>
  38.     </ul>
  39. <div>
  40.  


В итоге меню имеет высоту не равную высоте пунктов меню, а высоту равную левой колонке сайта. То есть почему-то свойство clear распространяется не только на пункты меню, а ещё и на левую колонку, хотя тег li с классом clear находится внутрь правой калонке, а не на уровне колонок. В чём дело?
 
 Top
IllusionMH
Отправлено: 26 Февраля, 2012 - 04:36:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Pavelbeginner, дело в спецификации

Цитата:
both
Requires that the top border edge of the box be below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document.

т.е. ниже любого(в смысле каждого) элемента с флоатом выше в документе, а значит и ниже левой колонки.
Браузер, как говорится, все правильно сделал ©

Если я правильно понял что требуется, то это делается примерно так или так (в этом случае корректно работают отступы у элемента ниже колонок)

(Отредактировано автором: 26 Февраля, 2012 - 06:20:09)

 
 Top
Pavelbeginner
Отправлено: 26 Февраля, 2012 - 11:53:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Спасибо за информацию. По поводу решения проблемы - это не то, что мне нужно. Мне нужно добиться эффекта, чтобы контейнер с меню был по высоте равен содержимому. Это содержимое может быть не обязательно в одну строку. Причём каждый пункт меню должен иметь float:left. Есть другое решение - добавить блоку с меню свойство overflow:hidden - круто! то что надо! Но! В opera и ie нужно указывать ширину http://www.quirksmode.org/css/clearing.html, что не есть хорошо. Может есть ещё какие-нибудь способы?
 
 Top
IllusionMH
Отправлено: 26 Февраля, 2012 - 14:59:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




А clearfix чего не подходит?
Там блок тоже растягивается по высоте содержимого.
Pavelbeginner пишет:
В opera и ie нужно указывать ширину

Это какого года текст? Вот сейчас скопировал пример оттуда, наделал кучу блоков разной высоты и опера(12.00 и 11.61) ведет себя как и все остальные и без задания ширины.
Можно тестовый пример с воспроизведением этого "бага"?
 
 Top
Pavelbeginner
Отправлено: 28 Февраля, 2012 - 00:40:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




А Вы не знаете, что говорят стандарты о overflow:hidden у внешнего блока и float у внутреннего? То есть в стандартах сказано, что внешний блок должен обвести внутренний блок с float:left или right? Что-нибудь про это сказано?
 
 Top
IllusionMH
Отправлено: 28 Февраля, 2012 - 01:32:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Pavelbeginner, искал в спецификации для overflow - сказано, только что для отображения элементов не должен использоваться механизм прокрутки. Про то, чтобы растянутся - ничего не сказано.
Но, как потом подсказал гугл - искал не в том месте.
cssing » overflow:hidden

P.S. А мне этот метод всегда казался хаком Хм

(Отредактировано автором: 28 Февраля, 2012 - 02:06:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTML, Дизайн & CSS »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB