我有一个div类heading
,其中包含动态生成的文本,我想使用border-bottom
为其加下划线。但是,如果我设置.heading {width:auto}
,则div会水平填充其容器,并且下划线太长。
如何使div只与包含文本一样长?
答案 0 :(得分:6)
Visual formatting model - 'Inline-block', non-replaced elements in normal flow:
如果
width
为auto
,则使用的值为浮动元素的shrink-to-fit宽度。
auto
或margin-left
的计算值margin-right
成为0
的使用值。
因此,您可以将元素的display
更改为inline-block
。
这样做时,元素的宽度将"shrink to fit"其内容,在本例中为文本。
.heading {
background: blue;
display: inline-block;
}
<div class="heading">text</div>
值得指出的是,您可以省略width: auto
,因为auto
已经是默认值。
显然,您也可以将元素的类型从div
更改为span
,默认情况下为inline
。