css h1 - 仅与文本一样宽

时间:2010-12-30 20:38:40

标签: css

我的网站有H1风格:

.centercol h1 {
    color: #006bb6;
    font-weight: normal;
    font-size: 18px;
    padding:3px 3px 3px 6px;
    border-left:3px solid #c6c1b8;
    background:#f2efe9;
    display:block;
}

背景颜色跨越centercol的整个宽度,500px ......

如何使H1仅跨越H1的文本宽度?

9 个答案:

答案 0 :(得分:94)

您可以使用内联块值进行显示,但是在这种情况下,您将松开h1的块功能,即如果它们是内联元素,则兄弟姐妹将与h1内联显示(在这种情况下,您可以使用一行 - 休息。)。

display:inline-block; 

答案 1 :(得分:19)

使用display: table
它并没有像display: inline-blockfloat: left那样打破保证金崩溃。

答案 2 :(得分:17)

您可以使用display:inline-block强制执行此行为

答案 3 :(得分:3)

一个简单的解决方法是将H1元素向左浮动:

.centercol h1{
    background: #F2EFE9;
    border-left: 3px solid #C6C1B8;
    color: #006BB6;
    display: block;
    float: left;
    font-weight: normal;
    font-size: 18px;
    padding: 3px 3px 3px 6px;
}

我已经整理了一个简单的jsfiddle示例,该示例显示了对于寻找更通用答案的任何人来说,“float:left”样式对H1元素宽度的影响:

http://jsfiddle.net/zmEBt/1/

答案 4 :(得分:0)

这是因为您的<h1> 是centercol的宽度。如果您希望它居中,请在<h1>上指定宽度并使用margin: 0 auto;

或者,或者,您可以浮动<h1>,这将使其仅与文本一样宽。

答案 5 :(得分:0)

我最近通过使用表标题解决了这个问题,尽管我不能说是否建议这样做。在我看来,其他答案似乎并没有奏效。

h1 {
  display: table-caption;
}

答案 6 :(得分:-1)

有点像其他建议,您可以使用以下代码。但是,如果你去了保证金:0自动;路线我建议将H1的顶部和底部的余量设置为0以外的其他值。因此,可能是保证金:6px auto;什么的。

.centercol h1{
    display: inline-block;
    color: #006bb6;
    font-weight: normal;
    font-size: 18px;
    padding:3px 3px 3px 6px;
    border-left:3px solid #c6c1b8;
    background:#f2efe9;
    display:block;
}

答案 7 :(得分:-1)

align-self-start,align-self-center ... in flexbox

.centercol h1{
    background: #F2EFE9;
    border-left: 3px solid #C6C1B8;
    color: #006BB6;
    display: block;
    align-self: center;
    font-weight: normal;
    font-size: 18px;
    padding: 3px 3px 3px 6px;
}

答案 8 :(得分:-4)

您可以使用<span>代替<h1>