2011-12-19 47 views
8

我将如何设置文本的背景颜色不扩展为其父级的宽度div?我用h1{background color:white;}并围绕我想要的文字包装h1,但白色背景只是延伸到文本之外。这几乎就像你只是强调单词。css背景颜色扩展到文字?

+0

为什么不改变文本的颜色,让背景颜色:透明?我不确定你在这里做什么。 – 2011-12-19 22:13:56

+0

您是否尝试在div上添加背景颜色而不是h1元素? – Rondel 2011-12-19 22:13:57

回答

15

h1是一个块元素,所以它将使用所有可用的区域。所以改变这个元素内联,只使用其宽度

h1 { 
    display: inline; 
    background-color: white; 
} 

http://jsfiddle.net/wxNQR/

+1

这解决了它。可悲的是我有5分钟,直到我可以检查这个... – Matt 2011-12-19 22:24:07

+1

可悲吗? xD ...... – eveevans 2011-12-19 22:27:30

3

问题是,h1是块级元素,默认情况下,块级元素将展开以填充父元素的所有可用宽度。

解决这个最简单的方法是float元素:

h1 { 
    background-color: white; 
    float: left; 
} 

然后,您将需要的款式下段,使其不流动一轮的标题元素:

p { 
    clear: left; 
} 

如果您不习惯支持IE7及以下版本,则可以使用相邻的兄弟选择器来使此选项更加整洁,以便在h1元素之后直接使用p元素:

h1 + p { 
    clear: left; 
} 
+1

老实说,我发现花车是一个主要的PITA,并且不同意花车呈现_easiest_解决方案。为什么不把文字包装在''中呢? – 2011-12-19 22:18:35

+0

@MДΓΓБДLL好吧,“最好的语义解决方案”。 IMO仅为了造型而引入'span'是一团糟。 – lonesomeday 2011-12-19 22:19:32

+1

@MДΓΓБДLL因为H1可能是使用的语义上正确的元素。国际海事组织显示:内联块将是解决这个问题的最好方法 - 如果只有IE7支持它.. – ptriek 2011-12-19 22:19:37