CSS H1-仅与文本一样宽


78

我的网站具有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;
}

背景颜色跨越中心col的整个宽度,500像素...

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

Answers:


107

您可以使用inline-block值进行显示,但是在这种情况下,您将失去h1的块功能,即,如果兄弟元素是内联元素,则它们将与h1内联显示(在这种情况下,您可以使用line-break
)。

display:inline-block; 

26
您也可以尝试使用display:table;这种方式,您无需使用换行符。
阿诺·范·奥尔德

对于那些想知道如何设置blockquote宽度(需要在图片左侧放置)的人,可以使用display:block; 溢出:隐藏
JinSnow


19

您可以使用display:inline-block强制这种行为


4

一个简单的解决方法是将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​​/


3

这是因为your<h1> 是中心col的宽度。在上指定宽度,<h1>margin: 0 auto;在需要居中时使用。

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


如果我指定宽度,那么带有更多文本的H1标签会自动换行,对吗?
tony noriega 2010年

0

我最近通过使用表标题解决了这个问题,尽管我不能说是否建议这样做。在我的情况下,其他答案似乎没有得到解决。

h1 {
  display: table-caption;
}

-1

与其他建议有些类似,您可以使用以下代码。但是,如果要这样做,请注意余量:0自动;我建议将H1顶部和底部的边距设置为0以外的值。因此,也许margin: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;
}

-3

在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;
}

4
您的答案不完整,您甚至没有解释什么是flexbox
Elias Soares

-5

您可以使用<span>而不是<h1>


更改语义(语义),只是进行样式并不是一个好主意。<h1>与css属性一起使用会更好display: inline-block
magikMaker '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.