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 :: Отмена действия float

 PHP.SU

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


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

> Без описания
Pavelbeginner
Отправлено: 03 Мая, 2012 - 12:44:41
Post Id



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


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


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




Есть две колонки сайта, вот верстка:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html style="height:100%;">
  4.  <head>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6.   <style>
  7.         .clear
  8.         {
  9.                 clear:both;
  10.         }
  11.        
  12.         .left
  13.         {
  14.                 float:left;
  15.         }
  16.        
  17.         .right
  18.         {
  19.                 float:right;
  20.         }
  21.         ul
  22.         {
  23.                 padding:0;
  24.         }
  25.   </style>
  26.  </head>
  27.         <body style="height:100%;">
  28.                 <div style="border:1px red solid;">
  29.                         <div style="float:left;width:100px;border:1px green solid;height:500px;">
  30.                                
  31.                         </div>
  32.                         <div style="margin:0 0 0 110px;border:1px black solid;">
  33.                                 fsdfsdf
  34.                                 sd
  35.                                 fs
  36.                                 df
  37.                                 sd
  38.                                 f
  39.                                 sd
  40.                                 f
  41.                                 <ul>
  42.                                         <li class="right">
  43.                                                 fsdfsdf
  44.                                         </li>
  45.                                         <li class="left">
  46.                                                 fsfewggegw
  47.                                         </li>
  48.                                         <li class="right">
  49.                                                 fsdfsdf
  50.                                         </li>
  51.                                         <li class="left">
  52.                                                 fsfewggegw
  53.                                         </li>
  54.                                 </ul>
  55.                         </div>
  56.                         <div class="clear">
  57.                         </div>
  58.                 </div>
  59.         </body>
  60. </html>
  61.  

Мне нужно, чтобы вторая колонка сайта имела высоту равную содержимому, но т.к. для li используется свойство float, то эти блоки вываливаются. после li вставить тег со свойством clear:both я не могу т.к. левая колонка сайта имеет свойство float:left. Прописать тегу ul свойство overflow:hidden я не могу т.к. внутри тегов li есть всплывающие окна, позиционируемые вне области тега ul. Использовать display:inline-block у ul тоже не хочу. Почему не хочу? Просто весь этот пример вымышленный и я привел все условия, которые хочу смоделировать и хочу найти решение как можно сделать, чтобы блоки со свойством float не вываливались. Нужен аналог clear:both.
(Добавление)
И вдогонку еще один вопрос:
2) Можно ли применять display:inline-block к тегу li?
 
 Top
armancho7777777 Супермодератор
Отправлено: 03 Мая, 2012 - 23:24:21
Post Id



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


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


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




Pavelbeginner пишет:
то эти блоки вываливаются

Лекарство: overflow:hidden; родителю.

armancho7777777 пишет:
Прописать тегу ul свойство overflow:hidden я не могу т.к. внутри тегов li есть всплывающие окна

Добавьте обёртку и ей overflow:hidden;.

armancho7777777 пишет:
Можно ли применять display:inline-block к тегу li?
Да.
(Добавление)
Да и не понятно, если честно, в чём задача стоит в целом?
2-3 колоночный макет?
Если нет, то что тогда?))

(Отредактировано автором: 03 Мая, 2012 - 23:28:26)

 
 Top
Pavelbeginner
Отправлено: 14 Мая, 2012 - 23:39:16
Post Id



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


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


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




Поясню, что надо. Сайт имеет две колонки, как в моем первом посте. В правой колонке находятся float-блоки. Под этими float-блоками, например, должны идти другие блочные-элементы, например, div с текстом. Т.к. сверху над дивом идут float-элементы, то див не обращает на них внимание и float-ы залазят на див. Мне не нужно, чтобы на див залезали float-ы. Можно было бы добавить диву свойство clear:both, но я не могу использовать это свойство в правой колонке т.к. левая колонка сайта имеет свойство float:left. Использовать свойство overflow:hidden к тегу ul я также не могу т.к. внутри тегов li находятся всплывающие окна и их попросту обрежет свойство overlow:hidden у тега ul. Поэтому мне нужно придумать аналог clear:both.
 
 Top
IllusionMH
Отправлено: 15 Мая, 2012 - 00:00:43
Post Id



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


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


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




Pavelbeginner, есть по два псевдоэлемента у каждого объекта, и еще у свойства clear учть не только параметр both, еще есть none, left, right Подмигивание
Обычно используется псевдоэлемент after для дива-контейнера, ну или создается невидимый див в самом конце контейнера, если так хочется видеть ИЕ8-

(Отредактировано автором: 15 Мая, 2012 - 00:01:51)

 
 Top
Pavelbeginner
Отправлено: 15 Мая, 2012 - 01:15:11
Post Id



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


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


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




IllusionMH пишет:
Pavelbeginner, есть по два псевдоэлемента у каждого объекта, и еще у свойства clear учть не только параметр both, еще есть none, left, right Подмигивание

Ну да, но предположим, что у нас тогда трехколончатый макет, где 3-яя колонка имеет свойство float:right и тогда clear вообще отпадает.
 
 Top
IllusionMH
Отправлено: 15 Мая, 2012 - 02:28:53
Post Id



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


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


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




Pavelbeginner, ну вот каким макаром он отпадает? (в коде в первом сообщении вообще не увидел трехколоночного макета)
Уже готовый вариант читать здесь
Есть блок обертки, в нем сначала(код, если смотреть сверху вниз) идут две колонки, у которых есть флоаты (флоаты всегда должны идти перед тем, что их должно обтекать), потом идет колонка с содержимым и боковыми отступами равными ширине колонок, потом идет либо доп элемент, либо псевдоэлемент after который содержит свойство clear. Или (как в примере по ссылке) clear можно вообще использовать на футере.

Ну просто дофига сайтов с трехколоночным макетом, и проблем нет. А тут какие-то надуманные пробелмы.

P.S. Лучше прочесть про трехколоночный макет по ссылке выше, и несколько раз спецификацию для float и clear

(Отредактировано автором: 15 Мая, 2012 - 02:46:19)

 
 Top
Pavelbeginner
Отправлено: 15 Мая, 2012 - 12:35:10
Post Id



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


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


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




[color=black][/color]
IllusionMH пишет:
Pavelbeginner, ну вот каким макаром он отпадает? (в коде в первом сообщении вообще не увидел трехколоночного макета)
Уже готовый вариант читать здесь
Ну я же написал, что "Ну да, но предположим, что у нас тогда трехколончатый макет". Я же писал, что див, на который не должны "залазить" float-блоки, находится внутри средней колонки, а не под колонками. Поэтому внутри средней колонки нельзя использовать свойство clear т.к. правая и левая колонки сайта имеют свойство float:left/right(чем грозит применение clear внутри средней колонки я думаю Вы понимаете). Поэтому мне и нужно придумать аналог clear.
(Добавление)
overflow:hidden также нельзя использовать т.к. из-за этого внутри блока с overflow:hidden нельзя использовать всплывающие окна т.к. при определенных условиях они будут обрезаться.
 
 Top
Pavelbeginner
Отправлено: 16 Мая, 2012 - 11:29:36
Post Id



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


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


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




Нет идей?
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Мая, 2012 - 11:36:09
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Pavelbeginner пишет:
Нет идей?
Внутрь блока поместить еще один "wrapper" див и в нем флоатить и клерить все что угодно.
 
 Top
IllusionMH
Отправлено: 16 Мая, 2012 - 12:13:10
Post Id



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


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


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




Pavelbeginner, прошу прощения - был сонный и неправильно понял.

Итак: несколько вариантов, у всех есть недостатки, но т.к. inline-block не катит, а все новые модули для размещения(layout вылетел из головы русский термин) только в черновиках, то придется чем-то жертвовать.

1) Если макет с двумя колонками - просто clear: right|left (противоположная к обтеканию боковой колонки) у следующего элемента

2) Если точно известно, что все блоки в "одной строке" то просто можно задать высоту для ul.

3) Если известно точное число блоков (т.е. известно какой у него был бы класс right|left)
У последнего элемента убирается класс
CODE (CSS):
скопировать код в буфер обмена
  1. ul {
  2.  text-align: right|left; /*в зависимости от того, какой класс должен был быть у последнего*/
  3. }


4) Немножко упрощенный предыдущий: если задана минимальная ширина (т.е. немного элементов и нет того, что с двух стороны элементы должны переноситься на новую строку), то сначала выписываются все элементы которые имеют float: right, потом все, у которых float: left, для последнего класс/стиль не применяются.
В данном случае не приходится гадать какой text-align должен быть у ul

Варианты 3/4 имеют недостаток, если вдруг имеются элементы в которых текст написан в 2 строки(или просто разная высота элементов), то высокие могут налазить на следующий элемент.

Пример для третьего варианта http://jsfiddle[dot]net/IllusionMH/GCMVk/
для наглядности поменял местами правые и левые классы, чтобы показать, что можно выравнивать последний элемент по правой стороне.
 
 Top
Pavelbeginner
Отправлено: 16 Мая, 2012 - 14:15:53
Post Id



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


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


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




DeepVarvar пишет:
Внутрь блока поместить еще один "wrapper" див и в нем флоатить и клерить все что угодно.
Еще один див чем поможет? Он не создает новый блочный поток, поэтому внутри него clear использовать нельзя т.к. левая и правая колонки сайта имеют свойство float
 
 Top
Medallion
Отправлено: 18 Мая, 2012 - 20:34:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Вот мой вариант, как тебя я понял. Возможно по стилям, я что-то лишнее написал,
но вот я предлагаю свой код.Я правильно понял, так ты хотел расформировать блоки?!
Я хоть форматирую код нормально, читабельный)

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  6. <title>Образец</title>
  7.  
  8. <style>
  9.  
  10. * {
  11.         margin: 0;
  12.         padding: 0;
  13. }
  14.  
  15. html,body,#wrapper,#top {
  16.         height: 100%;
  17.         width: 100%;
  18. }
  19.  
  20. #wrapper {
  21.         min-height: 100%;
  22. }
  23.  
  24. #left {
  25.         float: left;
  26.         height: 500px;
  27.         width: 10%;
  28.         background: #eee;
  29. }
  30.  
  31. #right {
  32.         float: right;
  33.         height: auto;
  34.         width: 90%;
  35.         background: #ffc;
  36. }
  37.  
  38.  
  39. #left > ul {
  40.         margin: 10px;
  41.         list-style: none;
  42. }
  43.  
  44. #top {
  45.         height: 40px;
  46.         clear: both;
  47. }
  48.  
  49. #right #top > ul {
  50.         margin: 10px;
  51.         list-style: none;
  52.         clear: both;
  53. }
  54.  
  55. #top ul > li {
  56.         float: left;
  57.         margin-left: 10px;
  58.         display: block;
  59. }
  60.  
  61. div.content {
  62.         height: auto;
  63.         background: #fef;
  64.         border-top: 1px solid green;
  65.         clear: both;
  66. }
  67.  
  68. ul.left {
  69.         float: left;
  70.         padding: 20px;
  71.         list-style: none;
  72.         background: #fca;
  73. }
  74.  
  75. ul.right {
  76.         float: right;
  77.         padding: 20px;
  78.         list-style: none;
  79.         background: #fca;
  80. }
  81.  
  82.  
  83. </style>
  84. </head>
  85.  
  86. <body>
  87.         <div id="wrapper">
  88.        
  89.                 <div id="left">
  90.                         <ul>
  91.                                 <li>One</li>
  92.                                 <li>Two</li>
  93.                                 <li>Three</li>
  94.                                 <li>Four</li>
  95.                                 <li>Five</li>
  96.                         </ul>
  97.                 </div><!--left-->
  98.                
  99.                 <div id="right">
  100.                
  101.                         <div id="top">
  102.                         <ul>
  103.                                 <li>One</li>
  104.                                 <li>Two</li>
  105.                                 <li>Three</li>
  106.                                 <li>Four</li>
  107.                                 <li>Five</li>
  108.                         </ul>
  109.                         </div><!--top-->
  110.                                
  111.                         <div class="content">
  112.                                 <ul class="left">
  113.                                         <li>One</li>
  114.                                         <li>Two</li>
  115.                                         <li>Three</li>
  116.                                         <li>Four</li>
  117.                                         <li>Five</li>
  118.                                 </ul>
  119.                                
  120.                                 <ul class="right">
  121.                                         <li>One</li>
  122.                                         <li>Two</li>
  123.                                         <li>Three</li>
  124.                                         <li>Four</li>
  125.                                         <li>Five</li>
  126.                                 </ul>
  127.                         </div><!--content-->
  128.                        
  129.                         <div class="content">
  130.                                 <ul class="left" style="background: #aca;">
  131.                                         <li>One</li>
  132.                                         <li>Two</li>
  133.                                         <li>Three</li>
  134.                                         <li>Four</li>
  135.                                         <li>Five</li>
  136.                                 </ul>
  137.                                
  138.                                 <ul class="right" style="background: #aee;">
  139.                                         <li>One</li>
  140.                                         <li>Two</li>
  141.                                         <li>Three</li>
  142.                                         <li>Four</li>
  143.                                         <li>Five</li>
  144.                                 </ul>
  145.                         </div><!--content-->
  146.                 </div><!--right-->
  147.         </div><!--wrapper-->
  148. </body>
  149.  
  150. </html>
  151.  
 
 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