我有一组<span>
元素(每个元素都嵌套到对应的<div>
)。他们构建了一堆面板,如下图所示。
当 span 包含一些文本时,它具有正常的高度。但是当它为空时,它的高度为0px。但我需要它有一个正常的高度(让它看起来像在图片中)。
如何实现这种行为?(我试图插入一个空格,但也许有更好的解决方案)。
这是一个简单而强大的解决方案:
span.item:empty:before {
content: "\200b"; // unicode zero width space character
}
(更新 12/18/2015:不要使用\00a0
不间断空间,而是使用\200b
,这也是一个不间断空间,但宽度为零。请参阅我在https://stackoverflow.com/a/29355130/516910上的其他答案)
此 CSS 选择器仅选择“空”的跨度,并将一些内容注入该空白空间,即不间断空格字符。因此,无论您设置什么字体大小和行高,周围的所有内容<span>
都会对齐,就像您在 that 中存在文本一样<span>
,这可能是您想要的。
http://plnkr.co/edit/eXHphA?p=preview
结果如下所示:
我看到使用的两个问题min-height
:
以下是出现问题时的反例:
http://plnkr.co/edit/zeEvca?p=preview
http://plnkr.co/edit/GGd7mz?p=preview
最后一个示例的代码:
<div class="group">
Hello <span class="item">Text</span>
</div>
<div class="group">
Huh? <span class="item"></span>
</div>
<div class="group">
Yes! <span class="correct"></span>
</div>
CSS:
.group {
background-color: #f1f1f1;
padding: 5px;
font-size: 20px;
margin-bottom: 20px;
}
.item {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
min-height: 20px;
}
.correct {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
}
.correct:empty:before {
content: "\00a0";
}
您可以设置 span display:inline-block; 然后添加最小高度
从图片中,您似乎已经设置display: block
了span
元素。如果没有,请添加。或者,考虑div
改用。这两个元素的区别在于span
默认是inline,默认div
是block,那么为什么不使用后者呢?
然后,您需要设置min-height
一个等于具有内容的项目的高度的值。这通常由它们的行高决定。默认行高因字体(和浏览器)而异,因此要获得一致的结果,请明确设置行高,例如
* { line-height: 1.25; }
span { min-height: 1.25em; }
也许这会奏效-
span{
min-height:16px;
}