<divstyle="float:left;width:100px;border:1px green solid;height:500px;">
</div>
<divstyle="margin:0 0 0 110px;border:1px black solid;">
fsdfsdf
sd
fs
df
sd
f
sd
f
<ul>
<liclass="right">
fsdfsdf
</li>
<liclass="left">
fsfewggegw
</li>
<liclass="right">
fsdfsdf
</li>
<liclass="left">
fsfewggegw
</li>
</ul>
</div>
<divclass="clear">
</div>
</div>
</body>
</html>
Мне нужно, чтобы вторая колонка сайта имела высоту равную содержимому, но т.к. для li используется свойство float, то эти блоки вываливаются. после li вставить тег со свойством clear:both я не могу т.к. левая колонка сайта имеет свойство float:left. Прописать тегу ul свойство overflow:hidden я не могу т.к. внутри тегов li есть всплывающие окна, позиционируемые вне области тега ul. Использовать display:inline-block у ul тоже не хочу. Почему не хочу? Просто весь этот пример вымышленный и я привел все условия, которые хочу смоделировать и хочу найти решение как можно сделать, чтобы блоки со свойством float не вываливались. Нужен аналог clear:both. (Добавление)
И вдогонку еще один вопрос:
2) Можно ли применять display:inline-block к тегу li?
armancho7777777
Отправлено: 03 Мая, 2012 - 23:24:21
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
Pavelbeginner пишет:
то эти блоки вываливаются
Лекарство: overflow:hidden; родителю.
armancho7777777 пишет:
Прописать тегу ul свойство overflow:hidden я не могу т.к. внутри тегов li есть всплывающие окна
Добавьте обёртку и ей overflow:hidden;.
armancho7777777 пишет:
Можно ли применять display:inline-block к тегу li?
Да. (Добавление)
Да и не понятно, если честно, в чём задача стоит в целом?
2-3 колоночный макет?
Если нет, то что тогда?))
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Поясню, что надо. Сайт имеет две колонки, как в моем первом посте. В правой колонке находятся float-блоки. Под этими float-блоками, например, должны идти другие блочные-элементы, например, div с текстом. Т.к. сверху над дивом идут float-элементы, то див не обращает на них внимание и float-ы залазят на див. Мне не нужно, чтобы на див залезали float-ы. Можно было бы добавить диву свойство clear:both, но я не могу использовать это свойство в правой колонке т.к. левая колонка сайта имеет свойство float:left. Использовать свойство overflow:hidden к тегу ul я также не могу т.к. внутри тегов li находятся всплывающие окна и их попросту обрежет свойство overlow:hidden у тега ul. Поэтому мне нужно придумать аналог clear:both.
IllusionMH
Отправлено: 15 Мая, 2012 - 00:00:43
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Pavelbeginner, есть по два псевдоэлемента у каждого объекта, и еще у свойства clear учть не только параметр both, еще есть none, left, right
Обычно используется псевдоэлемент after для дива-контейнера, ну или создается невидимый див в самом конце контейнера, если так хочется видеть ИЕ8-
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
IllusionMH пишет:
Pavelbeginner, есть по два псевдоэлемента у каждого объекта, и еще у свойства clear учть не только параметр both, еще есть none, left, right Подмигивание
Ну да, но предположим, что у нас тогда трехколончатый макет, где 3-яя колонка имеет свойство float:right и тогда clear вообще отпадает.
IllusionMH
Отправлено: 15 Мая, 2012 - 02:28:53
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Pavelbeginner, ну вот каким макаром он отпадает? (в коде в первом сообщении вообще не увидел трехколоночного макета)
Уже готовый вариант читать здесь
Есть блок обертки, в нем сначала(код, если смотреть сверху вниз) идут две колонки, у которых есть флоаты (флоаты всегда должны идти перед тем, что их должно обтекать), потом идет колонка с содержимым и боковыми отступами равными ширине колонок, потом идет либо доп элемент, либо псевдоэлемент after который содержит свойство clear. Или (как в примере по ссылке) clear можно вообще использовать на футере.
Ну просто дофига сайтов с трехколоночным макетом, и проблем нет. А тут какие-то надуманные пробелмы.
P.S. Лучше прочесть про трехколоночный макет по ссылке выше, и несколько раз спецификацию для float и clear
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
[color=black][/color]
IllusionMH пишет:
Pavelbeginner, ну вот каким макаром он отпадает? (в коде в первом сообщении вообще не увидел трехколоночного макета)
Уже готовый вариант читать здесь
Ну я же написал, что "Ну да, но предположим, что у нас тогда трехколончатый макет". Я же писал, что див, на который не должны "залазить" float-блоки, находится внутри средней колонки, а не под колонками. Поэтому внутри средней колонки нельзя использовать свойство clear т.к. правая и левая колонки сайта имеют свойство float:left/right(чем грозит применение clear внутри средней колонки я думаю Вы понимаете). Поэтому мне и нужно придумать аналог clear. (Добавление)
overflow:hidden также нельзя использовать т.к. из-за этого внутри блока с overflow:hidden нельзя использовать всплывающие окна т.к. при определенных условиях они будут обрезаться.
Pavelbeginner
Отправлено: 16 Мая, 2012 - 11:29:36
Частый посетитель
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Нет идей?
DeepVarvar
Отправлено: 16 Мая, 2012 - 11:36:09
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Pavelbeginner пишет:
Нет идей?
Внутрь блока поместить еще один "wrapper" див и в нем флоатить и клерить все что угодно.
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Pavelbeginner, прошу прощения - был сонный и неправильно понял.
Итак: несколько вариантов, у всех есть недостатки, но т.к. inline-block не катит, а все новые модули для размещения(layout вылетел из головы русский термин) только в черновиках, то придется чем-то жертвовать.
1) Если макет с двумя колонками - просто clear: right|left (противоположная к обтеканию боковой колонки) у следующего элемента
2) Если точно известно, что все блоки в "одной строке" то просто можно задать высоту для ul.
3) Если известно точное число блоков (т.е. известно какой у него был бы класс right|left)
У последнего элемента убирается класс
text-align:right|left;/*в зависимости от того, какой класс должен был быть у последнего*/
}
4) Немножко упрощенный предыдущий: если задана минимальная ширина (т.е. немного элементов и нет того, что с двух стороны элементы должны переноситься на новую строку), то сначала выписываются все элементы которые имеют float: right, потом все, у которых float: left, для последнего класс/стиль не применяются.
В данном случае не приходится гадать какой text-align должен быть у ul
Варианты 3/4 имеют недостаток, если вдруг имеются элементы в которых текст написан в 2 строки(или просто разная высота элементов), то высокие могут налазить на следующий элемент.
Пример для третьего варианта http://jsfiddle[dot]net/IllusionMH/GCMVk/
для наглядности поменял местами правые и левые классы, чтобы показать, что можно выравнивать последний элемент по правой стороне.
Pavelbeginner
Отправлено: 16 Мая, 2012 - 14:15:53
Частый посетитель
Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010
Помог: 1 раз(а)
DeepVarvar пишет:
Внутрь блока поместить еще один "wrapper" див и в нем флоатить и клерить все что угодно.
Еще один див чем поможет? Он не создает новый блочный поток, поэтому внутри него clear использовать нельзя т.к. левая и правая колонки сайта имеют свойство float
Medallion
Отправлено: 18 Мая, 2012 - 20:34:23
Частый гость
Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012 Откуда: Херсон, Украина
Помог: 7 раз(а)
Вот мой вариант, как тебя я понял. Возможно по стилям, я что-то лишнее написал,
но вот я предлагаю свой код.Я правильно понял, так ты хотел расформировать блоки?!
Я хоть форматирую код нормально, читабельный)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.