Ответ 1
он работает, если вы удаляете плавающий. http://jsbin.com/izoca/2/edit
с поплавками он работает только в том случае, если имеется некоторое содержимое, например.
Это мой системный случай 960:
<div class="kundregister_grid_full">
<div class="kundregister_grid_1">ID</div>
<div class="kundregister_grid_1">Namn</div>
<div class="kundregister_grid_1">Anv.Namn</div>
<div class="kundregister_grid_1">Email</div>
<div class="kundregister_grid_1">Roll</div>
<div class="kundregister_grid_1">Aktiv</div>
</div>
Это мой набор div, используемый как структура таблицы.
CSS говорит следующее:
.kundregister_grid_1 {
display: inline-block;
float: left;
margin: 0;
text-align: center;
}
.kundregister_grid_1 {
width: 140px;
}
Не против шведского названия. Я хочу, чтобы divs отображались, даже если у них нет значений.
<div class="kundregister_grid_full">
<div class="kundregister_grid_1">ID</div>
<div class="kundregister_grid_1"></div>
<div class="kundregister_grid_1"></div>
<div class="kundregister_grid_1">Email</div>
<div class="kundregister_grid_1">Roll</div>
<div class="kundregister_grid_1">Aktiv</div>
</div>
Таким образом, в этом случае нет никаких "Namn" и "Avn.Namn" в двух столбцах. Однако при выполнении этого в хроме они удаляются и больше не выталкивают другие divs в порядке float:left
. Поэтому, если у меня есть категории в одних и тех же div выше, тогда значения будут помещены в неправильную категорию.
он работает, если вы удаляете плавающий. http://jsbin.com/izoca/2/edit
с поплавками он работает только в том случае, если имеется некоторое содержимое, например.
Попробуйте добавить
к пустым элементам.
Я не понимаю, почему вы здесь не используете <table>
? Они будут делать такие вещи автоматически.
Небольшое обновление для ответа @no1cobla. Это скрывает период. Это решение работает в IE8 +.
.class:after
{
content: '.';
visibility: hidden;
}
Простое решение для пустых плавающих divs состоит в том, чтобы добавить:
таким образом вы можете сохранить функциональность float и заставлять ее заполнять пробел при пустом.
Я использую эту технику в столбцах макета страницы, чтобы сохранить каждый столбец в своей позиции, даже если остальные столбцы пусты.
Пример:
.left-column
{
width: 200px;
min-height: 1px;
float: left;
}
.right-column
{
width: 500px;
min-height: 1px;
float: left;
}
Просто добавьте символ пробела нулевой ширины внутри псевдоэлемента
.class:after {
content: '\200b';
}
Это один из способов:
.your-selector:empty::after {
content: ".";
visibility: hidden;
}
Используя встроенный блок, он будет вести себя как встроенный объект. так что никаких поплавков не было, чтобы получить их рядом друг с другом на одной линии. И действительно, как сказал Рито, плавать нужно "тело", как будто им нужны размеры.
Я полностью согласен с Пеккой в использовании таблиц. Все, кто строит макеты с помощью div, избегают таблиц, подобных этому. Но используйте их для табличных данных! Это то, за что они предназначены. И в вашем случае я думаю, что вам они нужны:)
НО, если вы действительно хотите, чего хотите. Существует способ взлома css. То же, что и взломанный поплавок.
.kundregister_grid_1:after { content: "."; }
Добавьте это, и вы также установите: D (Примечание: не работает в IE, но это исправление)
Почему бы просто не добавить "min-width" в ваш css-класс?
Если им нужно плавать, вы всегда можете установить минимальную высоту в 1px, чтобы они не рушились.
работает, но это неправильный путь Я думаю, что w min-height: 1px;
При создании настраиваемого набора тегов макета, я нашел еще один ответ на эту проблему. Здесь представлен пользовательский набор тегов и их классы CSS.
HTML
<layout-table>
<layout-header>
<layout-column> 1 a</layout-column>
<layout-column> </layout-column>
<layout-column> 3 </layout-column>
<layout-column> 4 </layout-column>
</layout-header>
<layout-row>
<layout-column> a </layout-column>
<layout-column> a 1</layout-column>
<layout-column> a </layout-column>
<layout-column> a </layout-column>
</layout-row>
<layout-footer>
<layout-column> 1 </layout-column>
<layout-column> </layout-column>
<layout-column> 3 b</layout-column>
<layout-column> 4 </layout-column>
</layout-footer>
</layout-table>
CSS
layout-table
{
display : table;
clear : both;
table-layout : fixed;
width : 100%;
}
layout-table:unresolved
{
color : red;
border: 1px blue solid;
empty-cells : show;
}
layout-header, layout-footer, layout-row
{
display : table-row;
clear : both;
empty-cells : show;
width : 100%;
}
layout-column
{
display : table-column;
float : left;
width : 25%;
min-width : 25%;
empty-cells : show;
box-sizing: border-box;
/* border: 1px solid white; */
padding : 1px 1px 1px 1px;
}
layout-row:nth-child(even)
{
background-color : lightblue;
}
layout-row:hover
{ background-color: #f5f5f5 }
Ключевым моментом здесь является размер окна и заполнение.
Вы можете:
Установите .kundregister_grid_1
:
width
(или width-min
) с помощью height
(или min-height
)padding-top
padding-bottom
border-top
border-bottom
Или используйте псевдоэлементы: ::before
или ::after
с помощью:
{content: "\200B";}
{content: "."; visibility: hidden;}
.Или поместите
внутри пустого элемента, но иногда это может привести к неожиданным последствиям, например. в сочетании с text-decoration: underline;