Я хочу контейнер с двумя столбцами. Подробности:
Контейнер
- Ширина должна соответствовать 100% его родительского элемента (это легко сделать).
- Высота должна быть отрегулирована так, чтобы она содержала оба столбца (т. Е. Ее высота должна быть точно равна большей высоте двух столбцов, поэтому переполнения нет и полосы прокрутки никогда не отображаются)
- должен иметь минимальный размер, равный двойной ширине левого столбца.
Колонны в целом
- Должно быть переменной высоты, с учетом высоты их содержимого.
- Должен располагаться рядом, чтобы их верхние края были на одной линии.
- Не следует разбивать макет или переносить друг на друга, если к одному из них применяется хотя бы один пиксель рамки, отступа или поля, потому что это будет крайне нестабильно и неудачно.
левая колонка специально
- Должен иметь фиксированную абсолютную ширину в пиксельных единицах.
Правильный столбец специально
- Ширина должна заполнять оставшееся пространство в контейнере. Другими словами ...
- Ширина должна равняться ширине контейнера минус ширина левого столбца, так что, если я помещу элемент блока DIV в этот столбец, установите его ширину равной 100%, присвойте ему высоту примерно в 10 пикселей и дайте ему цвет фона, я увижу цветную полосу размером 10px, которая идет от правого края левого столбца к правому краю контейнера (т. е. заполняет ширину правого столбца).
Требуемая стабильность
Контейнер должен иметь возможность изменять размер (путем изменения размера окна браузера) до его минимальной ширины (указанной ранее) или до гораздо большей ширины без нарушения макета. «Разрыв» будет включать изменение размера левого столбца вообще (помните, что он должен иметь фиксированную ширину в пикселях), правый столбец оборачивается под левым, появляются полосы прокрутки, блочные элементы в правом столбце не могут занимать всю ширину столбца и вообще ни одна из вышеупомянутых спецификаций не остается верной.
Справочная информация
Если используются плавающие элементы, не должно быть шансов, что правый столбец будет перенесен под левый, что контейнер не сможет содержать оба столбца (путем отсечения любой части столбца или разрешения любой части столбцов Переполнить его границу), или появятся полосы прокрутки (поэтому я бы не хотел предлагать использовать что-либо, кроме переполнения: скрытое, чтобы вызвать сдерживание плавающего элемента). Применение границ к столбцам не должно нарушать макет. Содержимое столбцов, особенно правого столбца, не должно нарушать макет.
Кажется, для этого есть простое решение на основе таблиц, но при любых обстоятельствах оно терпит неудачу. Например, в Safari мой левый столбец фиксированной ширины будет уменьшаться, если контейнер становится слишком маленьким, вместо того, чтобы поддерживать указанную мной ширину. Также представляется, что CSS-ширина при применении к элементу TD относится к минимальной ширине, так что если внутри нее будет что-то большее, она будет расширяться. Я пытался использовать макет таблицы: исправлено; не помогает Я также видел случай, когда элемент TD, представляющий правый столбец, не будет расширяться, чтобы заполнить оставшуюся область, или он будет выглядеть (например, третий столбец шириной 1 пиксель будет перемещен полностью вправо), но размещение границы вокруг правого столбца покажет, что его ширина равна только встроенному содержимому, а элементы уровня блока с шириной, равной 100%, не заполняют ширину столбца, а скорее соответствуют ширине встроенного содержимого. (т.е. ширина ТД, кажется, полностью зависит от содержимого).
Одно потенциальное решение Я видел слишком сложное; Меня не волнует IE6, пока он работает в IE8, Firefox 4 и Safari 5.