CSS中的line-hight属性是用来控制文本行之间的空隙的。它一般情况下没有单位的设定(如:line-height:1.4;)所以这是一个按字体尺寸的比例来计算。这对印刷版来说是一个很重要的属性。线条过低就会挤在一起,线条过高就会相距甚远,这两种情况都会降低可读性。不过你可能已经知道了这一点。
本文中,我们将把注意力放在一些设计上。如果你知道(或可以计算出)的line-height的精确值,你可以做一些奇妙的东西!
每行文本设置不同颜色
很遗憾这里没有::nth-line(),我们直接使用<span>是不可靠的,因为会有很多不同的事情导致文本在不同的地方被打乱。
尽管是非标准的,但这里还有一种用法就是使用一个元素的背景作为文字的背景。
- .text {
 - -webkit-background-clip: text;
 - -webkit-text-fill-color: transparent;
 - }
 
而这里还有另一个绝招,你可以用linear-gradient()来让颜色排列在一起就不会褪变成另一个颜色。它只是会突然的结束然后开始另一个。比方说我们知道line-height是22px,我们可以制作一个像这样的阶梯色。
- .text {
 - background-image: linear-gradient(
 - to bottombottom,
 - #9588DD,
 - #9588DD 22px,
 - #DD88C8 22px,
 - #DD88C8 44px,
 - #D3DD88 44px,
 - #D3DD88 66px,
 - #88B0DD 66px,
 - #88B0DD);
 - }
 

结合着两种技巧
在不支持文本背景剪裁的浏览器里,比如Firefox,你会得到一个文本后面的实心背景颜色块。也许这很酷你会喜欢它。但也可能你只是想要得到那样的文本颜色。在这种情况下,你可以使用@support去单独的支持它。
此外,当你需要在各处使用line-height,把他设置成变量或许会更好。我将在这里使用SCSS,或许有一天在CSS中也可以使用变量。所以改变之后,他依旧被渲染,看起来它一直保持工作。
- $lh: 1.4em;
 - body {
 - font-size: 1em;
 - line-height: $lh;
 - }
 - @supports (-webkit-background-clip: text) {
 - p {
 - -webkit-background-clip: text;
 - -webkit-text-fill-color: transparent;
 - background-image: linear-gradient(
 - to bottombottom,
 - #9588DD,
 - #9588DD $lh,
 - #DD88C8 $lh,
 - #DD88C8 $lh*2,
 - #D3DD88 $lh*2,
 - #D3DD88 $lh*3,
 - #88B0DD $lh*3,
 - #88B0DD);
 - }
 - }
 
在元素的顶部使用这种方式是最容易的。下面是一个例子,重点是前几行被改变。
- .text {
 - -webkit-background-clip: text;
 - -webkit-text-fill-color: transparent;
 - background-image: linear-gradient(
 - to bottombottom,
 - rgba(
 

