2011-08-19 106 views
1

您将如何应用CSS仅背景色,而仅将颜色应用于可见文本。通过CSS设置背景颜色仅用于带文本的文本

我努力实现以下目标:

<div style="width:200px;background-color:white;"> 
<p style="background-color:red;color:black;">This text is longer than 200 pixel and therefore a line break will occur</p> 
</div> 

不幸的是,背景被应用于全与<p> - 标签和换行符发生之前不与最后一个字符结束。在旁注中,我无法手动分解显示的文本。

因此,如果输出上面是这样的:

----------this line is exactly 200px---------- 
This text is longer than 200 pixel and 
therefore a line break will occur 
---------------------------------------------- 

所以背景颜色应与“和”字结束第一行,并与字结束“出现”在第二行,离开<div>白色的背景。

我真的拉我的头发,并希望得到输入,如果这甚至可能没有手动设置换行符?我也会使用JavaScript解决方案,但只选择一个CSS。

+0

如果您正在讨论类似于本页面中发现的黑色背景的白色文本:http://31.192.226.6/work/localmarket.com/,它使用两个单独的元素(标题和一段),每行一个。 – powerbuoy

+0

......这不是我打算做的。我正在寻找一种可能性,不必手动将效果内容分开以便按照我想要的方式进行观看。 – uberconversion

回答

6

段落是块元素 - 它们占据其容器,而不是他们内容的宽度。

您需要使用<span>而不是<p>才能获得理想的效果。

或者你也可以使<p>成为内联元素,但这可能会破坏页面的其他方面。

p {display:inline} 
+0

ok,但通过使用display:inline属性,背景效果与元素内最长的行一样长。这意味着第一行的背景颜色和第二行一样宽(这个长度更长)...... – uberconversion

+1

没有按照您想要的方式手动标记部分内容和格式化文本,这是使用纯CSS方法可以做的最好的。 –

+0

任何想法如何通过javascript标记行结束呢?必须有一个解决方案,因为我已经看到了这在许多网站周围,不能相信他们都手动做... ... – uberconversion