У меня есть два div. Один, который плавает влево и один плавает вправо. Одна из левых имеет ширину, равную 18%, и минимальную ширину 217 пикселей. Я хочу, чтобы div справа занимал оставшееся пространство, а также имел возможность изменять размер в соответствии с окном.
Проблема, с которой я сталкиваюсь, заключается в том, что я могу установить правую ширину div на 82% и плавать вправо, которая работает, пока я не сделаю слишком маленькую сторону окна, и в этом случае минимальная ширина левого div начнет и перестанет сокращаться, В правом div нет достаточного пространства для размещения, поэтому он сдвигается вниз.
Вот пример кода.
HTML
<div id="div1">
stuff inside of it
</div>
<div id="div2">
stuff inside of it
</div>
CSS
#div1
{
float: left;
width: 18%;
height: 100vh;
min-width: 130px;
box-shadow: 0px .3em .2em #000;
z-index: 2;
}
#div2
{
width: 82%;
float: right;
z-index: 1;
}
Так вот где я застрял, как мне подойти к фиксации div2? Я пробовал использовать таблицу вместо div, но вокруг ячеек появилась рамка, которую я не мог изменить, и она удалила мою тень, поэтому я бы предпочел решение без нее.
Вы также можете содержать поплавки с overflow:hidden
:
#div2{
overflow:hidden;
z-index: 1;
}
DIV заполнит оставшееся пространство (http://jsfiddle.net/MAjwt/)
auto
также предотвращает переход ниже, но вы можете увидеть полосы прокрутки, если текст внутри не помещается. Пример - jsfiddle.net/sMJ32 (добавление переноса word-wrap: break-word
хотя это можно исправить с помощью word-wrap: break-word
)
Ваше мышление об использовании таблиц несколько на правильном пути, поскольку элементы таблицы действительно имеют много свойств, которые делают их способными к такой вещи, но, как указывают люди в комментариях, это уже не действительный подход к использованию элементов таблицы для цели макета для не табличных данных.
Вот почему CSS реализовал набор правил стиля, построенных с учетом этих уникальных свойств. Вы можете установить контейнер вокруг двух элементов со стилем display: table;
, а затем дайте ему детям стиль display: table-cell;
Установка ширины для правой части div на 100% гарантирует, что она всегда заполняет столько места, сколько доступно для нее.
Но, поскольку ячейки таблицы не могут разбиться на новую строку, когда содержимое превышает ширину таблицы, оно будет автоматически подстраиваться под нужное место. Поэтому, когда другой div (левый) имеет определенную минимальную ширину, div справа присваивается меньше места, чтобы сохранить содержащиеся ячейки.
Вот пример использования вашего кода:
Свойства отображения таблицы CSS дают вам все преимущества этих уникальных элементов, но без семантических проблем. Они отлично подходят для сложных макетов, где другие типы отображения стиля не подходят.
min-width
, удалите ее. Браузер не может размещать элементыdiv
рядом друг с другом, которые не помещаются на уменьшающемся экране. Кроме того, не рассматривайте использование таблиц для этого, это подход 1999 года.