line-height的小技巧
CSS中的line-height属性控制着文字的行间距离。通常被设置为一个无单位的值(例如:line-height:1.4),与文字尺寸是成比例的。它是排版中的一个重要的属性。太低了文字会挤在一起,太高了文字会分开很远。是不可读的。
这篇文章会集中讨论一些技巧。如果你知道(或者可以算出)line-height的确切值,你可以做出一些整洁的东东。
给每一行不同的颜色
没有 ::nth-line(),不幸的是,实际上我们也不能可靠的用<span>,因为让文字在不同的位置换行有大量不同的原因。
有一个方法,即使不标准,使用了一个元素的背景作为文字的背景:
.text {
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
有另外一个技巧,我们可以用linear-gradient(),控制一种颜色没有渐变成另外一种
。我们已知行高是22px,可以使渐变正好在行间换色。
.text {
background-image: linear-gradient(
to bottom,
#9588DD,
#9588DD 22px,
#DD88C8 22px,
#DD88C8 44px,
#D3DD88 44px,
#D3DD88 66px,
#88B0DD 66px,
#88B0DD);
}
结合这两个技巧:
在不支持文字的background clipping的浏览器中,像FireFox,也许会用固定颜色。也许那很酷,你也很喜欢。也许你宁愿回退到固定颜色的文字。在那个情况下,可以用@supports只在支持的情况下请求。
同样的,由于反复的在使用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 bottom,
#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 bottom,
rgba(white, 0.8),
rgba(white, 0.8) $lh,
rgba(white, 0.6) $lh,
rgba(white, 0.6) $lh*2,
rgba(white, 0.4) $lh*2,
rgba(white, 0.4) $lh*3,
rgba(white, 0.2) $lh*3,
rgba(white, 0.2));
}
如果我们试着把最后几行随意数量的文本作为目标就更难了。需要第一个颜色从顶部向下环绕,除去几行。幸运的,可以用calc()来实现。
.text {
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-image: linear-gradient(
to bottom,
rgba(white, 0.8),
rgba(white, 0.8) calc(100% - 66px),
rgba(white, 0.6) calc(100% - 66px),
rgba(white, 0.6) calc(100% - 44px),
rgba(white, 0.4) calc(100% - 44px),
rgba(white, 0.4) calc(100% - 22px),
rgba(white, 0.2) calc(100% - 22px),
rgba(white, 0.2));
background-position: bottom center;
}
也有其他方法实现,比如覆盖伪元素gradient(用pointer-events: none;那并不恼人
)。
文字间的线
对solid-color-stops使用上面提到的类似技术,我们可以在已知line-height时创建精确的1px的重复的行梯度。最简单的方法是用repeating-linear-gradient(),
同样确保所有的元素优雅的呈现(像也基于line-height的padding)。
为了获得1px的线,我们需要知道line-height有多少像素,然后减1.目标是渐变在准确已知的line-height重复,在那里的最后像素是线条。由于设置了body字体1em,就是16px,由于line-height是em的,可以删除单元,除以1em,然后乘以16px,当需要的时候减去1.
每行一个式放置图片
如果你知道确切行高,可以做的另外一件事情是使得background-size
匹配它,至少在垂直轴上。然后可以使得它垂直重复,会按照每行一个图片的方式排列。
.text
background-image: url(image.svg);
background-size: $lh $lh;
background-repeat: repeat-y;
padding-left: $lh*2;
}
英文原文:http://css-tricks.com/fun-line-height/?utm_source=tuicool
line-height的小技巧的更多相关文章
- UVA 12657 Boxes in a Line(双向链表+小技巧)
题意:对于一行按照顺序排列盒子数字与位置都为 1,2,3,4....n 执行四种操作 c = 1 x 放到 y 的左边 c =2 x 放到 y 的右边 c =3 交换 x, y c =4 ...
- Win10 UWP开发中的重复性静态UI绘制小技巧 2
小技巧1 地址:http://www.cnblogs.com/ms-uap/p/4641419.html 介绍 我们在上一篇博文中展示了通过Shape.Stroke族属性实现静态重复性UI绘制,使得U ...
- Win10 UWP开发中的重复性静态UI绘制小技巧 1
介绍 在Windows 10 UWP界面实现的过程中,有时会遇到一些重复性的.静态的界面设计.比如:画许多等距的线条,画一圈时钟型的刻度线,同特别的策略排布元素,等等. 读者可能觉得这些需求十分简单, ...
- CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅
首页 登录注册 CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 阅读 8113 收藏 927 2017-09-26 原文链接:github.com 腾讯云容器服务CSS,立 ...
- VC6.0实用小技巧
VC6.0的若干实用小技巧 .检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键 “Ctrl+]”.如果括号匹配正确, ...
- cssfloat布局以及其他小技巧
css float 布局以及其他小技巧总结 这篇博文 前面四个部分是关于css 经典布局 如果你已经知道了 可以直接跳过看第六部分 css 的其他小技巧 1.0 左右居中布局 <!DOCTYPE ...
- JS处理事件小技巧
今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- css小技巧(1)
1.-webkit-overflow-scrolling: touch; 解决ios滑动时无缓冲问题 2.::-webkit-scrollbar 设置ios滑动时是否显示滚动条 3.::selecti ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
随机推荐
- 删除指定的文件.bat
@echo offattrib -s -h -r /s /d C:\*Thumbs.dbattrib -s -h -r /s /d D:\*Thumbs.dbattrib -s -h -r /s /d ...
- Firmware综述
软件的层次关系(从底层到高层)如下: 1. PSP (Processor Support Package). A group of file that are specific to a CPU ty ...
- Maven本地安装JAR包组件
http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ mvn instal ...
- [JS]Javascript的函数总结
Javascript中不存在函数重载,同名的函数将被最后一个覆盖. function test(a,b){ this.x = 1;} function test(a){ this.x = 2;} fu ...
- hadoop-spark-hive-hbase配置相关说明
1. zookeeper 配置 cp app/ochadoop-och3.0.0-SNAPSHOT/zookeeper-3.4.5-cdh5.0.0-beta-2-och3.0.0-SNAPSHOT/ ...
- HTML5表单与PHP交互
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- iis7.5中使用fastcgi方式配置php5.6.5
1.下载php-5.6.5,解压到d:/servers/php.修改extension_dir,放开用到的.dll文件:修改timezone=Asia/Shanghai; 2.如果在命令行执行php ...
- VI下删除所有内容
让光标在一个位置 , 如果全删就放在问价开始的位置 , 在非编辑的状态下输入dG(注意大小写) , 这样光标之后的所有行都会被删掉
- SVN---脱离SVN控制
创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn&qu ...
- java静态代理
WorkIF.java package com.wzh.test; public interface WorkIf { void doWork(String name);} work.java pac ...