У меня что-то вроде этого:
<div style="width:100px;float:left">menu</div>
<div style="float:left">content</div>
оба поплавка необходимы. Я хочу, чтобы div с содержимым заполнил весь экран за вычетом этих 100 пикселей для меню. Если я не использую float, div расширяется именно так, как должен. Но как мне установить это, если установлен float? Если я использую что-то вроде
style=width:100%
тогда div содержимого получает размер родительского элемента, который является либо телом, либо другим div, который я также пробовал, и поэтому, конечно, он не подходит справа от меню и затем показан ниже.
Самый перекрестно-совместимый способ, который я нашел, не очень очевиден. Вам нужно удалить поплавок из второго столбца и применить
overflow:hidden
к нему. Хотя может показаться, что это скрывает любой контент, выходящий за пределы div, на самом деле он заставляет div оставаться в пределах своего родителя.Используя ваш код, это пример того, как это можно сделать:
Надеюсь, это будет полезно для всех, у кого есть эта проблема, я обнаружил, что это то, что я нашел, лучше всего работает для сайта, который я создавал, после попытки настроить его на другие разрешения. К сожалению, это не сработает, если вы также включите плавающее справа
div
поле после содержимого, и если кто-нибудь знает хороший способ заставить это работать, с хорошей совместимостью с IE, я был бы очень рад это услышать.Новый, лучший вариант с использованием
display: flex;
Теперь, когда модель Flexbox реализована довольно широко, я бы рекомендовал использовать ее вместо нее, поскольку она обеспечивает гораздо большую
flex
гибкость в макете. Вот простой двухколоночный, как в оригинале:А вот и трехколонка с центральной колонкой гибкой ширины!
источник
Решение без фиксации размера вашей маржи
+1 для Меркуро, но если размер поплавка изменится, ваша фиксированная маржа потерпит неудачу. Если вы используете приведенный выше CSS справа,
div
он красиво изменит размер с изменением размера левого поплавка. Это немного более гибко. Проверьте скрипку здесь: http://jsfiddle.net/9ZHBK/144/источник
overflow: hidden
иoverflow auto
приводят к такому же поведению. Я также думаю, что люди ценят Fiddle.Плавающие элементы удаляются из обычного макета потока, а блочные элементы, такие как DIV, больше не охватывают ширину своего родителя. В этой ситуации правила меняются. Вместо того, чтобы изобретать колесо, посетите этот сайт, чтобы узнать о некоторых возможных решениях для создания макета с двумя столбцами, который вам нужен: http://www.maxdesign.com.au/presentation/page_layouts/
В частности, «жидкая двухколоночная компоновка».
Ура!
источник
Это обновленное решение для HTML 5, если кто-то интересуется и не любит «плавание».
Таблица отлично работает в этом случае, поскольку вы можете установить фиксированную ширину для таблицы и ячейки таблицы.
http://jsfiddle.net/EAEKc/596/ исходный код из @merkuro
источник
это использование может решить вашу проблему.
источник
И на основе
merkuro
решения, если вы хотите максимизировать то, что слева, вы должны использовать:Не тестировался в IE, поэтому может выглядеть сломанным в IE.
источник
Принятый ответ может сработать, но мне не нравится идея перекрытия полей. В HTML5 это можно сделать с помощью
display: flex;
. Это чистое решение. Просто установите ширину для одного элемента иflex-grow: 1;
для динамического элемента. Отредактированная версия скрипки merkuros: https://jsfiddle.net/EAEKc/1499/источник
Привет, есть простой способ с помощью скрытого метода переполнения в правом элементе.
источник
Это может сработать:
источник