Макет с двумя столбцами, один из которых имеет фиксированную ширину в CSS

Мне нужен красивый макет из двух столбцов с использованием CSS float.

Колонка №1 160 пикс. Столбец №2 100% (т.е. остальное пространство).

Я хочу сначала разместить div Col # 2, чтобы мой макет выглядел так:

<div id = "header"></div>
<div id = "content">
     <div id = "col2"></div>
     <div id = "col1"></div>
</div>
<div id = "footer"></div>

Что должно быть для этого эффекта?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
2 444
5

Ответы 5

Для этого вы должны использовать свойство CSS «float». Проверьте простая реализация здесь. А можно найти чуть подробнее статья здесь

Я думаю, ты мог бы сделать что-то подобное.

div#col2 {
  padding-left: 160px;
  width: 100%;
}

div#col1 {
  float: left;
  width: 160px;
}

Это зависит от #col1, предшествующего #col2, что может сделать его непригодным для использования.

Этого не будет, но полагается на то, что #col1 длиннее:

#content {
  position: relative;   
}
div#col2 {
  width: 160px;
  position: absolute;
}

div#col1 {
  width: 100%;
  margin-left: 160px;
}

Так нижний колонтитул останется на месте.

div#footer {
  clear: both;
}

Ни одно из вышеперечисленных действий не сработает.

div#col2 {
    width: 160px;
    float: left;
    position: relative;
}

div#col1 {
    width:100%;
    margin-left: 160px;
}

Предполагается, что столбец 2 должен отображаться как левая боковая панель с основным содержимым столбца 1.

Думаю, все наоборот.

sblundy 28.09.2008 00:42

Помните, что когда вы ссылаетесь на другие вопросы, они не «вверху» или «внизу», потому что по мере сбора голосов порядок вопросов меняется. Используйте цитату из ответов или вообще избегайте фраз: если вы хорошо скажете «ответ Боба», они могут ответить СНОВА после вашего.

Paul Kroll 28.09.2008 01:22

Это ответ, но mabwi необходимо заменить # col1 <-> # col2. Проголосовали в ожидании исправления.

Carl Camera 28.09.2008 01:52

Вы должны использовать float: left в первом столбце и float: right во втором столбце

Хотя вопрос задан много лет назад, я предоставлю этот полезный ответ для любых будущих справок и подобных случаев.

Поместив #col1 перед #col2 в разметку, вы можете переместить его вправо, если у вас есть LTR lauout (если у вас есть макет RTL, перемещайте влево) и укажите другой столбец overflow: hidden.

Обратите внимание, что родительский элемент (#content) также должен иметь overflow: hidden:

#content{
  overflow: hidden;
  padding: 20px 0;
  height: 100px;
  background-color: #cdeecd;
}

#content #col1{
  float: right;
  width: 160px;
  height: 100px;
  background-color: #eecdcd;
}

#content #col2{
  height: 100px;
  overflow: hidden;
  background-color: #cdcdee;
}
<div id = "content">
     <div id = "col1"></div>
     <div id = "col2"></div>
</div>

Другие вопросы по теме