如何使空div占用空间

时间:2010-08-05 15:41:30

标签: css html

这是我的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;
}

不介意瑞典语命名。我希望div显示,即使它们没有值。

<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'。但是,当在chrome中运行它时,它们将被删除,并且不再按照float:left的顺序推送其他div。因此,如果我在上面的相同div中有类别,则值将被置于错误的类别下。

13 个答案:

答案 0 :(得分:56)

如果删除浮动,它会起作用。 http://jsbin.com/izoca/2/edit

使用花车只有在有些内容的情况下才有效。 &nbsp;

答案 1 :(得分:53)

尝试将&nbsp;添加到空项目中。

我不明白你为什么不在这里使用<table>?他们会自动做这种事情。

答案 2 :(得分:22)

轻微更新@ no1cobla答案。这隐藏了这个时期。此解决方案适用于IE8 +。

.class:after
{
    content: '.';
    visibility: hidden;
}

答案 3 :(得分:19)

浮动 div的简单解决方案是添加:

  • 宽度(或最小宽度)
  • min-height

通过这种方式,您可以保持浮动功能并在空时强制它填充空间。

我在页面布局列中使用此技术,即使其他列为空,也要将每列保持在其位置。

示例:

.left-column
{
   width: 200px;
   min-height: 1px;
   float: left;
}

.right-column
{
    width: 500px;
    min-height: 1px;
    float: left;
}

答案 4 :(得分:11)

只需在伪元素

中添加零宽度空格字符
.class:after {
    content: '\200b';
}

答案 5 :(得分:3)

这是一种方式:

{{1}}

答案 6 :(得分:2)

有效,但这不是正确的方法 我认为w min-height:1px;

答案 7 :(得分:1)

使用内联块时,它将表现为内联对象。因此,不需要花车就可以让他们在一条线上彼此相邻。事实上,正如Rito所说,花车需要一个“身体”,就像他们需要尺寸一样。

我完全同意Pekka关于使用表格的看法。使用div构建布局的每个人都避免使用类似于表格的表格。但是将它们用于移动数据!这就是他们的目标。在你的情况下,我认为你需要它们:)

但如果你真的想要你想要的东西。有一种css hack方式。与浮动黑客相同。

.kundregister_grid_1:after {  content: ".";  }

添加一个,你也设置了:D(注意:在IE中不起作用,但是可以修复)

答案 8 :(得分:1)

为什么不在你的css-class中添加“min-width”?

答案 9 :(得分:1)

如果需要浮动,你可以随时将最小高度设置为1px,这样它们就不会崩溃。

答案 10 :(得分:1)

你可以:

设为.kundregister_grid_1

  • width(或width-min)与height(或min-height
  • padding-top
  • padding-bottom
  • border-top
  • border-bottom

或者使用伪元素::before::after

  • {content: "\200B";}
  • {content: "."; visibility: hidden;}

或者将&nbsp;放在空元素中,但这有时会带来意想不到的效果,例如。与text-decoration: underline;

结合使用

答案 11 :(得分:0)

在构建一组自定义布局标签时,我找到了另一个解决此问题的方法。这里提供了自定义标记集及其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 }

这里的关键是Box-Sizing和Padding。

答案 12 :(得分:0)

通过设置 div class row 和 style=display:table-row 对我有用