Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Простая задача обтекания... / 25 сообщений из 29, страница 1 из 2
10.09.2017, 18:27
    #39518834
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Вот простейший HTML:
Код: html
1.
2.
3.
<div style="float: right; width: 50px; height: 50px; background-color: green;"></div>
<div style="float: right; clear:right; width: 50px; height: 50px; background-color: blue;"></div>
<div style="float:left; width: 20px; height: 20px; background-color: red;"></div>


Задача : сделать так, чтобы красный прямоугольник располагался с самого верха (т.е. чтобы обтекал не только синий прямоугольник, но и зелёный тоже)

Запрещено :
1 . Добавлять какие-либо HTML-теги (например, <div> с [clear: ...]), т.е. обходимся только стилями
2 . Превращать красный прямоугольник в строчный элемент (вместо <div> указывать строчный тег или задавать ему [display: inline-block])
3 . Заключать зелёный и синий прямоугольники в общий <div>

Решение ?
...
Рейтинг: 0 / 0
10.09.2017, 18:28
    #39518835
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
...
Рейтинг: 0 / 0
10.09.2017, 18:39
    #39518841
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Насколько я понимаю, ключевой момент здесь в том, что [clear: right] означает не только то, что текущий плавающий элемент справа никого обтекать не будет, но и то, что последующие плавающие элементы тоже никого справа обтекать не будут (кроме текущего элемента с [clear: right])...
...
Рейтинг: 0 / 0
10.09.2017, 19:27
    #39518855
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02,

после clear:right или clear:both красный прямоугольник никак не может быть выше синего, только ставить стиль margin-top:-50px;
...
Рейтинг: 0 / 0
10.09.2017, 19:50
    #39518859
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
А с чего такие жёсткие ограничения. Какая исходная задача? Может некоторые ограничения сейчас не обоснованы...
...
Рейтинг: 0 / 0
10.09.2017, 23:19
    #39518912
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторпосле clear:right или clear:both красный прямоугольник никак не может быть выше синегоПочему ? Научно-популярным языком...
Ведь у красного [clear: right] нет...

автортолько ставить стиль margin-top:-50px; Конкретные пикселы сразу исключаем. Всё-таки, сабжевая задача - это упрощённый вариант реальной компоновки (в разы более сложной).
...
Рейтинг: 0 / 0
10.09.2017, 23:22
    #39518914
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторА с чего такие жёсткие ограничения... Может некоторые ограничения сейчас не обоснованы...
Можно со вторым ограничением поработать:
> 2. Превращать красный прямоугольник в строчный элемент (вместо <div> указывать строчный тег или задавать ему [display: inline-block])

Но если сделать красный прямоугольник строчным (inline-block), то возникнет другая задача - расположение каждого последующего строчного элемента с новой строки. Без дополнительной обёртки на всю доступную ширину
...
Рейтинг: 0 / 0
10.09.2017, 23:26
    #39518917
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторНо если сделать красный прямоугольник строчным (inline-block), то возникнет другая задача - расположение каждого последующего строчного элемента с новой строки. Без дополнительной обёртки на всю доступную ширину Здесь дополнительная обёртка (на всю доступную ширину) будет своего рода заплаткой.

Можно также после каждого красного прямоугольника через [:after] добавлять пустой блок, который по умолчанию займёт всю ширину и следующий строчный красный прямоугольник будет расположен с новой строки, но здесь идёт завязка на CSS3. Хотелось бы на чистом CSS2 реализовать
...
Рейтинг: 0 / 0
10.09.2017, 23:41
    #39518925
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02,

решение

Для красного блока float:left указывать не нужно, потому что с float отличным от none он не будет обтекать другие элементы (он сам станет плавающим)
...
Рейтинг: 0 / 0
11.09.2017, 00:06
    #39518928
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторДля красного блока float:left указывать не нужно, потому что с float отличным от none он не будет обтекать другие элементы (он сам станет плавающим) Красный должен быть плавающим, чтобы не занимал всю доступную ширину.
В реальной компоновке его размеры определяются текстовым содержимым и фиксированных размеров он не имеет.

Как вариант, можно красный прямоугольник оформить двумя блоками - внешний будет НЕплавающим и будет занимать всю доступную ширину, внутренний - плавающим и ширина будет определяться текстовым содержимым. Но этом вариант сродни той же самой заплатке, когда после плавающего элемента или через [:after] добавляется пустой блок [clear: both] или [clear: left]
...
Рейтинг: 0 / 0
11.09.2017, 00:13
    #39518930
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02авторпосле clear:right или clear:both красный прямоугольник никак не может быть выше синегоПочему ? Научно-популярным языком...
Ведь у красного [clear: right] нет...
Вам нужен clear только для того, чтобы синий был всегда ниже зелёного.
Но в таком случае (согласно указанным Вами стилям для красного), красный будет тоже ниже зелёного.

Cyrax_02автортолько ставить стиль margin-top:-50px; Конкретные пикселы сразу исключаем. Всё-таки, сабжевая задача - это упрощённый вариант реальной компоновки (в разы более сложной).
Вы сами указали жёстко height:50px; надо было тогда не указывать высоту, а внутри блока что-нибудь написать.

Согласно Вашему коду у меня возникло подозрение, что Вы допиливаете готовое решение через жёсткие стили в тегах.
Опять-же с жёстко указанным float:left для блока непонятно что делать, может у Вас такое требование.

Правильно заданный вопрос - половина ответа, если не больше.
Програмёр Вам уже подсказал, что float для красного блока лишний, но он правильный пример сделал, вынеся стили в CSS.
...
Рейтинг: 0 / 0
11.09.2017, 00:16
    #39518931
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02авторДля красного блока float:left указывать не нужно, потому что с float отличным от none он не будет обтекать другие элементы (он сам станет плавающим) Красный должен быть плавающим, чтобы не занимал всю доступную ширину.
В реальной компоновке его размеры определяются текстовым содержимым и фиксированных размеров он не имеет.

Как вариант, можно красный прямоугольник оформить двумя блоками - внешний будет НЕплавающим и будет занимать всю доступную ширину, внутренний - плавающим и ширина будет определяться текстовым содержимым. Но этом вариант сродни той же самой заплатке, когда после плавающего элемента или через [:after] добавляется пустой блок [clear: both] или [clear: left]

Если Вы решаете практическую задачу, то её следует озвучить и решить (потому что иначе будем ещё пол дня вокруг да около топтаться). Если же это академическая задача (то есть необходимо некое идеальное решение при именно таких условиях), то такая задача правильного решения не имеет из-за установленных ограничений :)

Так что решайте, что Вам на самом деле надо сделать, и вводите нужные корректировки в задание :) А то сейчас это звучит как "есть машина с квадратными колёсами. Хочу что бы она ездила, но при этом надо что бы плавно и без костылей". Такого не бывает. Или уберите квадратные колёса, или придётся мириться с костылями
...
Рейтинг: 0 / 0
11.09.2017, 09:59
    #39519007
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
На простейшем тестовом примере нет принципиальной разницы, где стили прописывать
В реальном проекте, естественно, все стили в отдельных css-файлах, а вернее, в scss-файлах

Вот подкорректированный пример, где размеры прямоугольников жёстко не заданы + несколько красных прямоугольников расположены друг под другом:
https://jsfiddle.net/wupkk897/2/

Задача : расположить красные прямоугольники сразу после простого текста
При этом красные прямоугольники должны быть расположены вертикально и НЕ должны занимать всю ширину свободного пространства. Весь текст в примере - произвольный.

Можно ли решить задачу только стилями и не используя CSS3 ?
И желательно не задавая блочным элементам [display: inline-block] - некорректно работает в IE6-7 (по отношению к блочным)
...
Рейтинг: 0 / 0
11.09.2017, 12:39
    #39519107
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02На простейшем тестовом примере нет принципиальной разницы, где стили прописывать
В реальном проекте, естественно, все стили в отдельных css-файлах, а вернее, в scss-файлах

Вот подкорректированный пример, где размеры прямоугольников жёстко не заданы + несколько красных прямоугольников расположены друг под другом:
https://jsfiddle.net/wupkk897/2/

Задача : расположить красные прямоугольники сразу после простого текста
При этом красные прямоугольники должны быть расположены вертикально и НЕ должны занимать всю ширину свободного пространства. Весь текст в примере - произвольный.

Можно ли решить задачу только стилями и не используя CSS3 ?
И желательно не задавая блочным элементам [display: inline-block] - некорректно работает в IE6-7 (по отношению к блочным)

У меня ощущение, что я попал в 2010-ый, когда ЕЩЁ заморачивались поддержкой IE6

Но вообще Вы так и не описали задачу, а накладываемые ограничения на решение делает его невозможным.

Почему Вы пытаетесь сделать именно так? Чем вызвано требование не менять вёрстку ( у Вас нет доступа или Вы не хотите)? Ну, с display: inline-block уже разобрались, хотя вероятнее всего это требование ничем не обосновано. Не представляю что это должен быть за софт, который работает на движке от IE6 (ведь самого IE6 уже давно нет). Из википедии: "По состоянию на апрель 2014 IE6 используют 0,1% пользователей". Думаю, понимаете, что по состоянию на сентябрь 2017 его если и используют, то не более 0.01%? Мы сейчас поддерживаем версии IE с одиннадцатой, например.

Ровно так же непонятен запрет использования css3, который уже поддерживается всеми браузерами с редкими исключениями, когда приходится использовать префиксы в свойствах. (-moz-, -o-, -webkit- и т.д.).
...
Рейтинг: 0 / 0
11.09.2017, 14:07
    #39519177
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторНо вообще Вы так и не описали задачу, а накладываемые ограничения на решение делает его невозможным.Половина описания реальной задачи занимает 200 листов ТЗ. Хотите почитать ?

В сабжевой теме рассматривается конкретный вопрос вёрстки плавающих блоков. Компоновка требуется именно такая, как описано во втором (откорректированном) примере. В контексте сабжевого вопроса это и есть задача. В контексте всего сайта - это всё ТЗ целиком. Думаю, в рамках этой темы обсуждать ТЗ не является адекватным решением.

Что касается ограничений, то ограничения, озвученные по отношению ко второму (откорректированному) примеру, НЕ являются искусственными. Поддержка старых браузеров, не поддерживающих CSS3, необходима не только в отношении настольных компьютеров, но и в отношении мобильных устройств, включая бюджетные смартфоны и даже телефоны.

По поводу [inline-block] - да, на IE6-7 можно наплевать. Плюнем. Но как вы предлагаете разместить красные прямоугольники с [inline-block] вертикально ?

Что касается НЕдобавления HTML-кода. Это идеологически и архитектурно неправильно. Оформление должно определяться стилями, структура и содержание - HTML-кодом. Думается, что и в плане SEO всякого рода HTML-мусор не приветствуется. Раньше вовсю использовал <div class="clearfix">, сейчас всё переверстал. Такие пустышки-заплатки не использую. Не использую и [:after { content: ""; display: block; clear: ...}].
...
Рейтинг: 0 / 0
11.09.2017, 18:03
    #39519410
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
[Cyrax_02]Что касается НЕдобавления HTML-кода. Это идеологически и архитектурно неправильно[/quote]

Это не так. Если Вы разделили контент на 2 колонки, значит сделали это по какому-то принципу. А значит у Вас на странице присутствует 2 разных группы контента (имеется ввиду именно в обсуждаемом участке страницы). Потому если у Вас есть доступ к html, то могу Вас заверить, что оборачивание контента в дивы не приведёт ни к чему плохому. Тем более что Вам и вовсе достаточно только правые блоки в div обернуть и задача уже будет решена (как я понимаю эти блоки по задумке и должны быть какими-то баннерами или типа того... что-то другое редко выносится в правую колонку страницы)

Вы просто возвели обычное рекомендационное утверждение в статус абсолютного правила, от чего и получили проблему :) Контент по смыслу вполне можно группировать с помощью блоков (и даже скорее не можно, а нужно, для простоты поддержки). И специально для этого в html5 добавили уйму семантических тэгов, позволяющих контент не просто разделить, а и явно указать парсеру, что это за контент и по какому принципу разделён.

Ну а насчёт css3...
css3 поддержка
Внизу на странице Вы можете найти таблицу с версиями браузеров и их поддержкой css3 в процентах. Как видно все браузеры поддерживают уже более 50% свойств... при чём в этом списке есть версии, которыми пользуются 0.4% пользователей (по сути 4 юзера из 1000, что обычно уже очень нецелесообразно поддерживать). Так что стандартная практика это не запрещать использование css3 в проекте, а наоборот поощрять, но только поддерживаемые свойства (что бы без костыле) или же свойства с префиксами (что бы потом можно было их одним движением удалить и оставить чистые стили).

При работе с мобильника (даже айфона или на андроиде) подсовывают совсем другой файл стилей... Но там, скорее всего, нет никаких двух колонок, ведь зачастую размеры экрана не позволяют. А если это совсем старый мобильник, то там вовсе всё чуть бы не до текстовой версии упрощают.
...
Рейтинг: 0 / 0
12.09.2017, 01:06
    #39519582
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторПотому если у Вас есть доступ к html, то могу Вас заверить, что оборачивание контента в дивы не приведёт ни к чему плохому. Тем более что Вам и вовсе достаточно только правые блоки в div обернуть и задача уже будет решена (как я понимаю эти блоки по задумке и должны быть какими-то баннерами или типа того... что-то другое редко выносится в правую колонку страницы)Доступ есть ко всему. И это не правая колонка, а содержимое центральной (правая колонка - ещё правее).
Что касается обёртывания в общий <div>. Помимо того, что зелёный и синий прямоугольные области семантически друг с другом никак не связаны, имеется принципиальная проблема - в зависимости от горизонтального разрешения зелёный (верхний) прямоугольник размещается слева или справа (float: left) и (float: right), при этом синий прямоугольник (нижний) всегда остаётся справа.

авторПри работе с мобильника (даже айфона или на андроиде) подсовывают совсем другой файл стилей... Но там, скорее всего, нет никаких двух колонок, ведь зачастую размеры экрана не позволяют. А если это совсем старый мобильник, то там вовсе всё чуть бы не до текстовой версии упрощают. "Подсовывают совсем другой файл стилей" - это когда разрабатываются две версии сайта (полная и урезанная мобильная)
Но при разработке единой адаптивной версии сайта css-стили одни (кстати, официально Google именно такой версии отдаёт предпочтение, про Яндекс не знаю). И для старых мобильников без особого труда полную многоколоночную вёрстку можно превратить в одну узкую колонку без "плюшек"

И как вы гарантированно определите, что запрос получен от совсем старого мобильника (чтобы отдавать " чуть ли не текстовую версию ") ?
...
Рейтинг: 0 / 0
12.09.2017, 10:14
    #39519714
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02И как вы гарантированно определите, что запрос получен от совсем старого мобильника (чтобы отдавать " чуть ли не текстовую версию ") ?
По разрешению экрана и по операционке например :)

Cyrax_02Помимо того, что зелёный и синий прямоугольные области семантически друг с другом никак не связаны, имеется принципиальная проблема - в зависимости от горизонтального разрешения зелёный (верхний) прямоугольник размещается слева или справа (float: left) и (float: right), при этом синий прямоугольник (нижний) всегда остаётся справа.
Тут как уже говорил без конкретики ничего не решится :) Изначально поставленная задача решения не имеет, и пока Вы её не измените, она так и будет без решения. Могу лишь предложить озвучить всё исходную задачу (а не попытку её решения), тогда, возможно, кто-то сможет озвучить и другие варианты решения. При этом не надо все 200 страниц ТЗ сюда копировать, разумеется. Достаточно скопировать несколько десятков строчек, которые описывают указанную часть страницы и приложить макет или прототип, по которому выполняется вёрстка.

Без дополнительной информации лично я больше ничем помочь не могу.
...
Рейтинг: 0 / 0
12.09.2017, 12:20
    #39519791
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторПо разрешению экрана и по операционке например :)
Разрешение экрана через заголовки запроса не передаётся. Да и "операционку" у старых мобильников определить не всегда можно точно. Или вы скриптами предлагаете определять и скриптами же подгружать соответствующий стиль ?

авторТут как уже говорил без конкретики ничего не решится :) Изначально поставленная задача решения не имеет, и пока Вы её не измените...
Де факто мы уже рассматриваем варианты "послаблений". Один из них - заключить правые блоки в общий <div>. Это "послабление" не реализуемо, т.к. в зависимости от горизонтального разрешения зелёный (верхний) прямоугольник размещается слева или справа, а правый остаётся всегда справа

Другое "послабление" - это [inline-block] красному прямоугольнику. На этом варианте пока и остановился...
...
Рейтинг: 0 / 0
12.09.2017, 13:48
    #39519857
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02,

авторРазрешение экрана через заголовки запроса не передаётся
Конечно не передаётся. Но в css не просто так ввели @media. Оно то и позволяет показывать разные варианты стилей для разных разрешений и даже для разных типов устройств.

авторДа и "операционку" у старых мобильников определить не всегда можно точно
Вам не нужна сама операционка. Вам нужен используемый клиент (браузер) и разрешение. А у старых телефонов оно до 320 по ширине у всех вроде (если нет, то процент исключений настолько мизерный, что ним снова же можно пренебречь). Под движку браузера узнаём поймёт ли он нашу вёрстку, а по ширине - нужна ли она ему вообще как таковая (320 по ширине это явно не 3 колонки контента).

авторОдин из них - заключить правые блоки в общий <div>. Это "послабление" не реализуемо, т.к. в зависимости от горизонтального разрешения зелёный (верхний) прямоугольник размещается слева или справа, а правый остаётся всегда справа
Так а с чего оно нереализуемо, если в зависимости от разрешения Вы можете применить разные стили?
Ну пускай при разрешении выше N у контейнера будет float: right, а вложенные будут обычными, а при разрешении меньше N контейнер будет обычным блоком, а вложенные в него будут плавающими (один с float: left, а второй с right.

Не вижу проблемы :)
...
Рейтинг: 0 / 0
12.09.2017, 13:56
    #39519863
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Готовая реализация

Вот даже накидал как это делается. Если уменьшить размер окна до ширины в 800px, то зелёный блок перепрыгнет влево.
...
Рейтинг: 0 / 0
12.09.2017, 15:57
    #39519950
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
автор Под движку браузера узнаём поймёт ли он нашу вёрстку, а по ширине - нужна ли она ему вообще как таковая (320 по ширине это явно не 3 колонки контента).На стороне сервера ширину вы никак не определите. Соответственно, и " нужна ли она ему вообще как таковая " - определить не сможете.
В моём случае даже на ширине 240px (минимум для бюджетных смартфонов) зелёный и синий "прямоугольники" отображаются (напомню, что все они расположены в центральной колонке). Соответственно, те же самые адаптивные стили должны работать и на старых бюджетных смартфонах, которые не поддерживают CSS3.

авторВот даже накидал как это делается. Если уменьшить размер окна до ширины в 800px, то зелёный блок перепрыгнет влево. Согласен, принципиальных проблем для оборачивания в общий блок пока нет.

Но всё равно семантически как-то некошерно в общий блок заключать.
Да и стили нужно усложнять. Есть два варианта компоновки верхнего зелёного прямоугольника - в первом случае синий прямоугольник отсутствует, во втором варианте - присутствует. Придётся либо для первого варианта добавлять эту обёртку-пустышку (для единственного зелёного прямоугольника), либо для второго варианта предусмотреть свой набор правил с учётом этой обёртки.
...
Рейтинг: 0 / 0
12.09.2017, 18:57
    #39520057
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02,

Ваше утверждение об нарушении семантики оценить не могу, ведь не знаю что в этих блоках должно быть. (да и вообще Вы излишне заморочились... от одной лишней обёртки ничего не изменится)

А озвученные в последнем сообщении проблемы вообще не понял. Про 2 варианта вёрстки Вы только сейчас упомянули, да и честно скажу, мне кажется что Вы и тут что-то усложнили (могу ошибаться, но чувство очень определённое, ведь очень необычно на 2 разные вёрстки применять одни и те же стили и расстраиваться, что что-то пришлось лишнее и ненужное написать :)) )
...
Рейтинг: 0 / 0
13.09.2017, 14:13
    #39520452
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
авторА озвученные в последнем сообщении проблемы вообще не понял. Про 2 варианта вёрстки Вы только сейчас упомянули, да и честно скажу, мне кажется что Вы и тут что-то усложнили (могу ошибаться, но чувство очень определённое, ведь очень необычно на 2 разные вёрстки применять одни и те же стили и расстраиваться, что что-то пришлось лишнее и ненужное написать
Вариантов компоновки даже не 2, а больше. И во всех вариантах используется один набор стилей для зелёного (верхнего) прямоугольника. Если добавить обёртку, специально для этого случая часть стилей придётся прописывать для обёртки, часть - для зелёного (верхнего) прямоугольника. Впрочем, это уже детали.

На текущий момент имеется 2 варианта решения (правда, не идеальные, но каждый предполагает некоторое допущение):
1 .Использовать плавающую обёртку для правых прямоугольных областей
2 .Использовать [inline-block] для красного прямоугольника
...
Рейтинг: 0 / 0
13.09.2017, 15:56
    #39520537
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая задача обтекания...
Cyrax_02авторА озвученные в последнем сообщении проблемы вообще не понял. Про 2 варианта вёрстки Вы только сейчас упомянули, да и честно скажу, мне кажется что Вы и тут что-то усложнили (могу ошибаться, но чувство очень определённое, ведь очень необычно на 2 разные вёрстки применять одни и те же стили и расстраиваться, что что-то пришлось лишнее и ненужное написать
Вариантов компоновки даже не 2, а больше. И во всех вариантах используется один набор стилей для зелёного (верхнего) прямоугольника. Если добавить обёртку, специально для этого случая часть стилей придётся прописывать для обёртки, часть - для зелёного (верхнего) прямоугольника. Впрочем, это уже детали.

На текущий момент имеется 2 варианта решения (правда, не идеальные, но каждый предполагает некоторое допущение):
1 .Использовать плавающую обёртку для правых прямоугольных областей
2 .Использовать [inline-block] для красного прямоугольника

Определённо следует выбрать первый ;) Потому что при реализации вторым способом Вам и правда придётся лишние элементы в вёрстку добавлять, для размещения красных блоков в столбик. Это или br или какие-то пустые блочные элементы, которые выполнят роль br (оба варианта фиговые, ведь br вперемешку с div - не самая лучшая и понятная реализация, а пустые div выполняющие роль br - вообще семантически неверно)

И ещё одно, если Ваши блоки могут по-разному модифицироваться (как Вы сказали, у Вас может быть множество компоновок этих блоков), то рекомендую Вам посмотреть на методологию БЭМ от яндекса. Она придумана именно для решения подобных задач и я, например, сейчас принял её как стандарт и требую от всех участников процесса следования этой методологии. Всё сразу в разы упростилось.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Простая задача обтекания... / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]