.container {
width: 850px;
padding: 0;
display: table;
margin-left: auto;
margin-right: auto;
}
.row {
display: table-row;
margin-bottom: 30px;
/* HERE */
}
.home_1 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_2 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
.home_3 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_4 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
<div class="container">
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
<div class="home_3"></div>
<div class="home_4"></div>
</div>
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
</div>
</div>
Мой вопрос касается строки, отмеченной HERE
в CSS. Я обнаружил, что строки расположены слишком близко друг к другу, поэтому я попытался добавить нижнее поле, чтобы разделить их. К сожалению, это не работает. Мне нужно добавить поля к ячейкам таблицы, чтобы разделить строки.
В чем причина такого поведения?
Кроме того, можно ли использовать эту стратегию для выполнения макета, как это делаю я:
[icon] - text [icon] - text
[icon] - text [icon] - text
или есть лучшая стратегия?
Ответы:
См. Стандарт CSS 2.1, раздел 17.5.3. При использовании
display:table-row
высота DIV определяется исключительно высотойtable-cell
элементов в нем. Таким образом, поля, отступы и высота этих элементов не имеют никакого эффекта.http://www.w3.org/TR/CSS2/tables.html
источник
Как это работает (с использованием реальной таблицы)?
Это не так динамично, поскольку вам нужно явно установить цвет границы (если нет другого способа обойти это тоже), но это то, с чем я экспериментирую в своем собственном проекте.
Изменить, чтобы включить комментарии относительно
transparent
:источник
Самое близкое, что я видел, - это установить
border-spacing: 0 30px;
контейнер div. Однако это просто оставляет мне место на верхнем краю таблицы, что противоречит цели, так как вам нужно поле margin-bottom.источник
line-height
margin: -30px 0
.Вы пробовали установить нижнее поле на
.row div
, то есть на свои «ячейки»? Когда вы работаете с реальными HTML-таблицами, вы также не можете устанавливать поля для строк - только для ячеек.источник
display: table
. Однако это не совсем то же самое, что маржа ...Для этого есть довольно простое решение: атрибуты
border-spacing
иborder-collapse
CSS работаютdisplay: table
.Вы можете использовать следующее, чтобы получить отступы / поля в своих ячейках.
Обратите внимание, что вам необходимо иметь
Иначе не получится.
источник
Скрипка
это может быть другое решение
источник
Добавьте разделитель между двумя элементами, затем сделайте его невидимым:
источник
Работает - добавить интервал в таблицу
источник
Если вам нужно определенное поле, например 20 пикселей, вы можете поместить таблицу в div.
Таким образом, #tableDiv имеет поле 20 пикселей, но сама таблица имеет ширину 100%, заставляя таблицу иметь полную ширину, за исключением полей с обеих сторон.
источник
добавление тега br между div сработало. добавить тег br между двумя div, которые отображаются: table-row в родительском элементе с display: table
источник