Подтвердить что ты не робот

Установка высоты div в HTML с помощью CSS

Я пытаюсь выложить табличную страницу с двумя столбцами. Я хочу, чтобы самый правый столбец состыковался справа от страницы, и этот столбец должен иметь четкий цвет фона. Содержание в правой части почти всегда будет меньше, чем слева. Я бы хотел, чтобы div справа всегда был достаточно высоким, чтобы достичь разделителя для строки ниже. Как я могу сделать, чтобы мой фоновый цвет заполнил это пространство?

.rightfloat {
  color: red;
  background-color: #BBBBBB;
  float: right;
  width: 200px;
}

.left {
  font-size: 20pt;
}

.separator {
  clear: both;
  width: 100%;
  border-top: 1px solid black;
}
<div class="separator">
  <div class="rightfloat">
    Some really short content.
  </div>
  <div class="left"> 
    Some really really really really really really
    really really really really big content
  </div>
</div>
<div class="separator">
  <div class="rightfloat">
    Some more short content.
  </div>
  <div class="left"> 
    Some really really really really really really
    really really really really big content
  </div>
</div>
4b9b3361

Ответ 1

Гм...

Короткий ответ на ваш вопрос заключается в том, что вы должны установить высоту 100% телу body и html, а затем установить высоту до 100% на каждый элемент div, который вы хотите сделать на 100% высотой страницы.

Собственно, высота 100% не будет работать в большинстве проектных ситуаций - это может быть коротко, но это не очень хороший ответ. Google "любые самые длинные" столбцы. Лучший способ - поместить левую и правую колонку внутри обертки div, поплавать левой и правой колонками, а затем плавать обертку - это заставляет ее растягиваться на высоту внутренних контейнеров, а затем устанавливать фоновое изображение на внешней обертке, Но наблюдайте за любыми горизонтальными полями на элементах с плавающей точкой, если вы получите IE "двойной поплавок с запасом".

Ответ 2

Попробуйте:

html, body,
#left, #right {
  height: 100%
}

#left {
  float: left;
  width: 25%;
}
#right {
  width: 75%;
}
<html>
  <body>
    <div id="left">
      Content
    </div>
    <div id="right">
      Content
    </div>
  </body>
</html>

Ответ 3

Некоторые браузеры поддерживают таблицы CSS, поэтому вы можете создать такой макет, используя различные значения CSS display: table-*. Там больше информации о таблицах CSS в этой статье (и одноименной книге) Рэйчел Эндрю: Все, что вы знаете о CSS, неверно

Если вам нужен согласованный макет в старых браузерах, которые не поддерживают таблицы CSS, вам нужно сделать две вещи:

  • Сделайте свой элемент "строка таблицы" очищенным внутренним флотированным элементом.

    Самый простой способ сделать это - установить overflow: hidden, который заботится о большинстве браузеров, и zoom: 1 запускать свойство hasLayout в более старых версиях IE.

    Существует много других способов очистки поплавков, если этот подход вызывает нежелательные побочные эффекты, вы должны проверить вопрос какой метод "clearfix" лучше всего, а статья при наличии макета для других методов.

  • Баланс высоты двух элементов таблицы.

    Есть два способа приблизиться к этому. Либо вы можете создать внешний вид равных высот, установив фоновое изображение в элементе "строка таблицы" (техника искусственных столбцов), либо вы можете сделайте высоту совпадений столбцов, давая каждому большое дополнение и одинаково большой отрицательный запас.

    Колонки Faux - это более простой подход и очень хорошо работают, когда фиксируется ширина одного или обоих столбцов. Другая техника лучше справляется с столбцами переменной ширины (на основе процентных или условных единиц), но может вызвать проблемы в некоторых браузерах, если вы напрямую ссылаетесь на контент в своих столбцах (например, если столбец содержит <div id="foo"></div> и вы связаны с #foo))

В этом примере используется метод заполнения/запаса, чтобы сбалансировать высоту столбцов.

html, body {
  height: 100%;
}

.row {
  zoom: 1;          /* Clear internal floats in IE */
  overflow: hidden; /* Clear internal floats */
}

.right-column,
.left-column {
  padding-bottom: 1000em;  /* Balance the heights of the columns */
  margin-bottom: -1000em;  /*                                    */
}

.right-column {
  width: 20%;
  float: right;
}

.left-column {
  width: 79%;
  float: left;
}
<div class="row">
  <div class="right-column">Right column content</div>
  <div class="left-column">Left column content</div>
</div>
<div class="row">
  <div class="right-column">Right column content</div>
  <div class="left-column">Left column content</div>
</div>

Ответ 4

Я отказался от строго CSS и использовал немного jquery:

var leftcol = $("#leftcolumn");
var rightcol = $("#rightcolumn");
var leftcol_height = leftcol.height();
var rightcol_height = rightcol.height();

if (leftcol_height > rightcol_height)
    rightcol.height(leftcol_height);
else
    leftcol.height(rightcol_height);

Ответ 5

Здесь приведен пример столбцов с равной высотой - Колонки равных высот - пересмотрены

Вы также можете проверить идею "Faux Columns" - Колонки Faux

Не ходите по маршруту таблицы. Если это не табличные данные, не рассматривайте их как таковые. Это плохо для доступности и гибкости.

Ответ 6

У меня была такая же проблема на моем сайте (бесстыдный плагин).

У меня была секция nav "float: right", а основная часть страницы имела фоновое изображение около 250 пикселей по выровненному вправо и "repeat-y". Затем я добавил что-то с "clear: both". Вот W3Schools и свойство CSS clear.

Я поместил ящик в нижней части раздела "page" class. Мой источник страницы выглядит примерно так.

body
 -> header (big blue banner)
 -> headerNav (green bar at the top)
 -> breadcrumbs (invisible at the moment)
 -> page
     -> navigation (floats to the right)
     -> content (main content)
         -> clear (the quote at the bottom)
         -> footerNav (the green bar at the bottom)
     -> clear (empty but still does something)
 -> footer (blue thing at the bottom)

Надеюсь, что это поможет:)

Ответ 7

Не нужно писать собственный css, есть библиотека под названием "Bootstrap css", вызвав ее в разделе заголовка HTML, мы можем добиться многих стилей. Вот пример: Если вы хотите предоставить два столбца в строке, вы можете просто сделать следующее:

<div class="row">
  <div class="col-md-6"></div>
  <div class="col-md-6"></div>
</div>

Здесь md означает устройство среднего уровня, вы можете использовать col-sm-6 для небольших устройств и col-xs-6 для дополнительных небольших устройств.

Ответ 8

Просто попробуйте помочь здесь, чтобы код был более читабельным.
Помните, что вы можете вставлять фрагменты кода, нажав на кнопку вверху с "101010". Просто введите свой код, затем выделите его и нажмите кнопку.

Вот пример:

<html>
    <body>
    <style type="text/css">
        .rightfloat {
            color: red;
            background-color: #BBBBBB;
            float: right;
            width: 200px;
        }

        .left {
            font-size: 20pt;
        }

        .separator {
            clear: both;
            width: 100%;
            border-top: 1px solid black;
        }
    </style>

Ответ 9

Короткий ответ на ваш вопрос заключается в том, что вы должны установить высоту 100% телу body и html, а затем установить высоту до 100% на каждый элемент div, который вы хотите сделать на 100% высотой страницы.

Ответ 10

Структура двух столбцов немного сложна для работы в CSS (по крайней мере, до тех пор, пока CSS3 не будет практичным.)

Плавающие влево и вправо будут работать до определенной точки, но это не позволит вам расширить фон. Чтобы сделать фоны неподвижными, вам придется реализовать технику, известную как "искусственные столбцы", что в основном означает, что у ваших колонок не будет фоновое изображение. Ваши 2 столбца будут содержаться внутри родительского тега. Этот родительский тег получает фоновое изображение, которое содержит 2 цвета колонок. Сделайте этот фон настолько большим, насколько вам это нужно (если он сплошной цвет, только сделайте его высотой 1 пиксель) и повторите его. AListApart имеет отличное пошаговое руководство по тому, что необходимо для его работы.

http://www.alistapart.com/articles/fauxcolumns/

Ответ 11

Я могу представить 2 варианта

  • Используйте javascript для изменения размера столбца меньшего размера при загрузке страницы.
  • Подделайте равные высоты, установив background-color для столбца в контейнере <div/> вместо (<div class="separator"/>) с помощью repeat-y

Ответ 12

Достаточно просто использовать свойство css width для этого.

Вот пример:

<style type="text/css">;
    td {
        width:25%;
        height:100%;
        float:left;
    }
</style>

Ответ 13

Это должно сработать для вас: установите высоту на 100% в css для элементов html и body. Затем вы можете отрегулировать высоту в соответствии с вашими потребностями в div.

html {
    height: 100%;
}

body {
    height: 100%;
}
div {
    height: 100%; /* Set Div Height */
}