Я хочу макет div с двумя столбцами, где каждый может иметь переменную ширину, например
div {
float: left;
}
.second {
background: #ccc;
}
<div>Tree</div>
<div class="second">View</div>
I want the 'view' div to expand to the whole width available after 'tree' div has filled needed space.
Currently, my 'view' div is resized to content it contains It will also be good if both divs take up the whole height.
Не дублировать отказ от ответственности:
- Expand div to max width when float:left is set because there the left one has a fixed width.
- Помогите с div - сделайте, чтобы div соответствовал оставшейся ширине, потому что мне нужно, чтобы два столбца были выровнены влево
html
css
multiple-columns
Анураг Униял
источник
источник
overflow hidden
Ответы:
The solution to this is actually very easy, but not at all obvious. You have to trigger something called a "block formatting context" (BFC), which interacts with floats in a specific way.
Just take that second div, remove the float, and give it
overflow:hidden
instead. Any overflow value other than visible makes the block it's set on become a BFC. BFCs don't allow descendant floats to escape them, nor do they allow sibling/ancestor floats to intrude into them. The net effect here is that the floated div will do its thing, then the second div will be an ordinary block, taking up all available width except that occupied by the float.This should work across all current browsers, though you may have to trigger hasLayout in IE6 and 7. I can't recall.
Demos:
источник
I just discovered the magic of flex boxes (display: flex). Try this:
Flex boxes give me the control I've wished css had for 15 years. Its finally here! More info: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
источник
flex-grow: 100;
вместоflex-grow: 1;
?flex-grow:10
а затем я бы установил #b в значение,flex-grow: 90
чтобы #a было бы 10% ширины линии, а #b было бы 90% ширины линии. Если никакие другие элементы не имеют стиля гибкой ширины, то это не имеет значения с технической точки зрения.Решение Flexbox
Это то, что
flex-grow
свойство для.Примечание. Добавьте префиксы поставщиков Flex, если это требуется поддерживаемыми браузерами .
источник
Это было бы хорошим примером того, что тривиально сделать с таблицами и трудно (если не невозможно, по крайней мере в смысле кроссбраузерности) делать с CSS.
Если бы оба столбца имели фиксированную ширину, это было бы легко.
If one of the columns was fixed width, this would be slightly harder but entirely doable.
With both columns variable width, IMHO you need to just use a two-column table.
источник
display:none;
При этом максимально адаптируясь к 100% на скользящей шкале, иногда лучше полностью изменить дизайн для мобильного устройства, используя сенсорный экран и стиль кнопки.Проверьте это решение
источник
Используйте
calc
:Проблема в том, что все ширины должны быть явно определены, либо как значение (px и em работают нормально), либо как процент от чего-то явно определенного самого себя.
источник
Здесь это может помочь ...
источник
<div class="clear" style="clear: both; height: 1px; overflow: hidden; font-size:0pt; margin-top: -1px;"></div>
Я не понимаю, почему люди хотят так усердно работать, чтобы найти решение с чистым CSS для простых столбчатых макетов, которые НАСТОЛЬКО ЛЕГКО используют старый
TABLE
тег.Все браузеры все еще имеют логику раскладки таблиц ... Возможно, вы называете меня динозавром, но я говорю, пусть это поможет вам.
Гораздо менее рискованно с точки зрения кросс-браузерной совместимости.
источник
media-queries
оба столбца один над другим на небольших устройствах, это невозможно сделать со старымtable
тегом. Чтобы это работало, вам нужно применитьCSS
стили таблиц. Итак, на данный момент лучше решить эту проблему,CSS
если вы хотите адаптивный макет для любого размера экрана.Если ширина другого столбца фиксирована, как насчет использования
calc
функции CSS, работающей для всех распространенных браузеров :Таким образом, ширина второго ряда будет рассчитана (т. Е. Оставшаяся ширина) и применена соответственно.
источник
css-grid
. Также работает,position: fixed
что делает все вокруг идеальным выбором! Спасибо!источник
Вы можете попробовать CSS Grid Layout .
источник
flex-grow - определяет способность элемента flex расти в случае необходимости. Он принимает значение без единицы, которое служит пропорцией. Он определяет, какое количество доступного пространства внутри гибкого контейнера должно занимать элемент.
Если для всех элементов flex-grow установлено значение 1, оставшееся пространство в контейнере будет распределено в равной степени всем дочерним элементам. Если один из дочерних элементов имеет значение 2, оставшееся пространство займет в два раза больше места, чем остальные (или попытается, по крайней мере). Подробнее здесь
источник
Немного другая реализация,
Две панели div (content + extra), расположенные рядом,
content panel
расширяются, если ихextra panel
нет.jsfiddle: http://jsfiddle.net/qLTMf/1722/
источник
Пэт - Вы правы. Вот почему это решение удовлетворит и «динозавров», и современников. :)
источник
Вы можете использовать библиотеку CSS W3, которая содержит класс,
rest
который делает это:Не забудьте связать библиотеку CSS на странице
header
:Вот официальная демоверсия: W3 School Tryit Editor
источник
Я не уверен, что это ответ, который вы ожидаете, но почему бы вам не установить ширину дерева на «auto» и ширину «View» на 100%?
источник
Посмотрите доступные CSS-макеты. Я бы порекомендовал Simpl или, чуть более сложный, Blueprint framework.
Если вы используете Simpl (который включает в себя импорт только одного файла simp.css ), вы можете сделать это:
, для макета 50-50, или:
для 25-75.
Это так просто.
источник
Спасибо за плагин Simpl.css!
не забудьте обернуть все ваши столбцы
ColumnWrapper
так.Я собираюсь выпустить версию 1.0 Simpl.css, так что помогите распространить информацию!
источник
Я написал функцию javascript, которую я вызываю из jQuery $ (document) .ready (). Это проанализирует все дочерние элементы родительского элемента div и обновит только самого правого дочернего элемента.
HTML
Javascript
источник
Это довольно легко, используя flexbox. Смотрите фрагмент ниже. Я добавил контейнер-обертку для управления потоком и установил глобальную высоту. Границы были добавлены, чтобы идентифицировать элементы. Обратите внимание, что div теперь расширяется до полной высоты, как требуется. Префиксы поставщика следует использовать для flexbox в реальном сценарии, поскольку он еще не полностью поддерживается.
Я разработал бесплатный инструмент для понимания и разработки макетов с помощью flexbox. Проверьте это здесь: http://algid.com/Flex-Designer
источник
stretch
потому что это значение по умолчанию, и нет необходимости делать из дочернего элемента гибкий контейнер, поэтомуdisplay:flex
он бесполезен для внутренних элементовЕсли обе ширины имеют переменную длину, почему бы вам не рассчитать ширину с некоторыми сценариями или на стороне сервера?
<div style="width: <=% getTreeWidth() %>">Tree</div>
источник