我面临一个问题,我有一个内联的
<span>
包含多行文本,背景是透明的。尽管具有默认的行高,但文本的背景重叠,导致背景在自身上叠加时出现较暗的水平行。以下是该问题的良好演示(包括图像和 jsfiddle):
问题的最小重现
HTML:
<h1>
<span>Although it is set to a line height of 1, the background behind text still overlaps between rows.</span>
</h1>
CSS:
h1 {
text-transform: uppercase;
font-family: Arial;
line-height: 1;
font-size: 30px;
background: rgba(0,0,0,0.5);
color: #FFF;
display: inline;
}
h1 span {
position: relative;
}
解决方案要求
- 背景颜色必须符合文本的形状;因此将设置为display:inline-block不是可行的解决方案。
- 设置固定的行高(或填充)不是最佳答案,因为精确的字体渲染在浏览器和用户设置之间会有所不同。例如,在Chrome中完美设置line-height将在Firefox中产生不完美的结果。
- 文本必须是动态的和语义化的。解决方案不能涉及在服务器上呈现文本的图像表示。
- 最好允许添加或删除任意填充以减少或增加文本与背景边缘之间的空间。
- Javascript可能很好。我正在使用Angular 2,因此与其良好集成的答案更好。
line-height
,而是计算版本 =>height
/font-size
=line-height
。但似乎display: inline
在每一侧都会多出 1.5 像素 => 33/30 = 1.1 用于 line-height。 - Tim Vermaelen1.09999999
。 - AA2992