制作一行高度的空div

jcu*_*bic 27 css

是否可以创建一个将生成以下HTML的规则:

<div style="width: 100%"></div>
Run Code Online (Sandbox Code Playgroud)

只使用CSS的一行高度,还是我需要把它&nbsp;作为内容?

Ori*_*iol 29

一些可能性:

  • 除了偶然之外,数量"1.25em"不等于一条线的高度. (3认同)
  • 这与纵横比无关.默认行高取决于字体和浏览器.当您可以简单地设置行高时,假设将使用特定字体并且它具有特定的默认行高是毫无意义的. (2认同)

Bol*_*ock 16

这取决于您对单行高度的定义,因为没有CSS单位对应于元素的计算行高.

如果您知道line-height此元素的确切值,则可以显式设置height为相同的值.但是,考虑到你的问题,情况可能并非如此.

有一个与字体大小相对应的单位,em如果一行的高度等于计算的字体大小,则可以使用该单位:

<div style="width: 100%; height: 1em"></div>
Run Code Online (Sandbox Code Playgroud)

否则你将不得不加入某种填料内容.你可以投入&nbsp;并完成它:

<div style="width: 100%">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)

或者通过使用伪元素编写CSS规则来进行一些矫枉过正,但您必须能够以某种方式定位此元素:

div::before { content: '\00a0'; }
Run Code Online (Sandbox Code Playgroud)

如果元素可能有或没有内容,但您希望它具有最小高度,

  • 使用min-height你原本应该使用的地方height,或

  • 选择div:empty::before代替,如果你选择使用伪元素,因此填料不会被插入,如果有内容.


vot*_*son 11

另一个解决方案:

.your-selector:empty::after {
    content: ".";
    visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用 `content: '\200B'` 来实现零宽度空间。 (5认同)
  • 这既聪明又优雅 - 它让线条遵循风格而无需指定高度.在我的实现中,我使用了`&nbsp;`而不是句点. (2认同)

Ada*_*ett 7

解决方案visibility: hidden;很聪明.将内容设置为Unicode字符feff(字节顺序标记)更简单.这没有宽度但有高度; 它在每个浏览器上的行为都一样,一直到IE6.

.your-selector:empty::before {
    content: '\feff';
}
Run Code Online (Sandbox Code Playgroud)

我发现WebKit(至少在Mac OS上)对于某些字体应用与粗体文本略有不同(1px)的行高度.为了实现一致性(在这种情况下,我们甚至需要应用于非空选择器):

.your-selector::before {
    content: '\feff';
    font-weight: 900;
}
Run Code Online (Sandbox Code Playgroud)


小智 6

许多年后,出现了新的 css 单元:lhrlh

div {
    min-height: 1lh;
}
Run Code Online (Sandbox Code Playgroud)

但缺乏支持(caniuse#lh)。目前 Chrome、Edge 和 Opera 支持它。Firefox 和 Safari 不支持。