是否可以创建将生成以下 HTML 的规则:
<div style="width: 100%"></div>
仅使用 CSS 的一行高度,还是我需要将
其作为内容?
一些可能性:
设置height
(或min-height
)为line-height
的使用值。
line-height
is的初始值normal
,其使用的值取决于实现,但规范建议一个介于1.0
和之间的数字1.2
在我的情况下(FF27 for winXP with font-family: "times new roman"
)该值是1.25
,所以你可以使用height: 1.25em
. 但是,该值可能与其他字体或实现不同。
然后,最好手动设置line-height
为某个值,例如line-height: 1.25em
.
div {
border: 1px solid red;
min-height: 1.25em;
line-height: 1.25;
}
<div></div>
请注意,如果您只想在元素没有内容时将这些样式设置为元素,则可以使用:empty
伪类:
div:empty {
border: 1px solid red;
height: 1.25em;
line-height: 1.25;
}
<div></div>
向元素中插入一些内容。
例如,您可以添加一个普通空间并设置white-space
为pre-wrap
(或pre
) 以防止空间折叠:
div {
border: 1px solid red;
white-space: pre-wrap;
}
<div> </div>
或者,您可以使用零宽度空格( ​
)
div { border: 1px solid red; }
<div></div><!-- There is a zero-width space inside -->
正如你所说,
也可以。但是,它是一个不间断的空格,所以它的目的是防止自动换行。然后,使用它在 IMO 语义上是不正确的。
正如@BoltClock所说,这些空格可以使用 CSS 伪元素插入,但请注意,这可能不适用于非常旧的浏览器。
这取决于您对单行高度的定义,因为没有与计算出的元素行高相对应的 CSS 单元。
如果您知道line-height
此元素的确切值,则可以显式设置height
为相同的值。但是,鉴于您的问题,情况可能并非如此。
有一个与字体大小相对应的单位,em
如果一行的高度等于计算出的字体大小,则可以使用该单位:
<div style="width: 100%; height: 1em"></div>
否则,您将不得不添加某种填充内容。您可以输入一个
并完成它:
<div style="width: 100%"> </div>
或者通过使用伪元素编写 CSS 规则来有点矫枉过正,但你必须能够以某种方式定位这个元素:
div::before { content: '\00a0'; }
如果元素可能有内容,也可能没有内容,但您希望它具有最小高度,
使用min-height
你本来会使用的地方height
,或者
如果您选择div:empty::before
使用伪元素,请改为选择,这样如果有内容,则不会插入填充符。
只是另一种解决方案:
.your-selector:empty::after {
content: ".";
visibility: hidden;
}
解决方案visibility: hidden;
很聪明。将内容设置为Unicode字符更简单feff
,这是字节顺序标记。这没有宽度但有高度;一直到 IE6,它在每个浏览器上的行为都是相同的。
.your-selector:empty::before {
content: '\feff';
}
我发现 WebKit(至少在 Mac OS 上)对粗体文本应用的行高与某些字体的普通文本略有不同(1px)。为了强制统一(在这种情况下,我们甚至需要应用到非空选择器):
.your-selector::before {
content: '\feff';
font-weight: 900;
}
我遇到的问题是 jQuery 终端需要有与普通行相同大小的空行。其他解决方案是有问题的,因为当使用固定的行高时,行之间存在间隙,Firefox中也存在我报告的关于字体大小 + 行高的布局的错误。
到目前为止,最好的解决方案是:
div::before {
content: '\0200B';
float: left;
display: block;
}
并且代码中没有行高/最小高度,它工作得很好。此外,当不使用 line-height 时,它具有好看的样式选择而没有间隙。
你想保持多高?这与您的字体大小有关吗?可以是 em、pt、px 或 %。
这只是 1.5em 是任意值的示例:
<div style="width: 100%; height: 5px" ></div>
如果您在此 div 中没有任何内容可写,请使用一些高度值。