文本样式化
掌握了 CSS 语言的基础之后,对于您来说,下一个需要关心的 CSS 主题就是为文本添加样式——一个您将会最经常使用 CSS 做的事情。在这里,我们专注于为文本样式的基础,包括设置字体、粗细、斜体、行还有字符间距、阴影以及文本的其他特征。
基本文字以及字体样式
用于样式文本的 CSS 属性通常可以分为两类,我们将在本文中分别观察。
- 字体样式:作用于字体的属性,会直接应用到文本中,比如使用哪种字体,字体的大小是怎样的,字体是粗体还是斜体,等等。
- 文本布局风格:作用于文本的间距以及其他布局功能的属性,比如,允许操纵行与字之间的空间,以及在内容框中,文本如何对齐。
字体
颜色
color 属性设置选中元素的前景内容的颜色 (通常指文本,不过也包含一些其他东西,或者是使用 text-decoration 属性放置在文本下方或上方的线 (underline overline)。
color
也可以接受任何合法的 css颜色值, 比如:
1 | p{ |
字体种类
要在你的文本上设置一个不同的字体,你可以使用 font-family 属性,这个允许你为浏览器指定一个字体 (或者一个字体的列表),然后浏览器可以将这种字体应用到选中的元素上。浏览器只会把在当前机器上可用的字体应用到当前正在访问的网站上;如果字体不可用,那么就会用浏览器默认的字体代替 default font. 下面是一个简单的例子:
1 | p { |
字体栈
由于你无法保证你想在你的网页上使用的字体的可用性 (甚至一个网络字体可能由于某些原因而出错), 你可以提供一个字体栈 (font stack),这样的话,浏览器就有多种字体可以选择了。只需包含一个font-family属性
,其值由几个用逗号分离的字体名称组成。比如:
1 | p { |
字体大小
- px (像素): 将像素的值赋予给你的文本。这是一个绝对单位, 它导致了在任何情况下,页面上的文本所计算出来的像素值都是一样的。
- em: 1em 等于我们设计的当前元素的父元素上设置的字体大小 (更加具体的话,比如包含在父元素中的大写字母 M 的宽度) 如果你有大量设置了不同字体大小的嵌套元素,这可能会变得棘手, 但它是可行的。为什么要使用这个麻烦的单位呢? 当你习惯这样做时,那么就会变得很自然,你可以使用
em
调整任何东西的大小,不只是文本。你可以有一个单位全部都使用 em 的网站,这样维护起来会很简单。 - rem: 这个单位的效果和 em 差不多,除了 1rem 等于 HTML 中的根元素的字体大小 ,而不是父元素。这可以让你更容易计算字体大小,但是遗憾的是, rem 不支持 Internet Explorer 8 和以下的版本。如果你的项目需要支持较老的浏览器,你可以坚持使用em或 px。
元素的 font-size
属性是从该元素的父元素继承的。所以这一切都是从整个文档的根元素——html开始,浏览器的 font-size
标准设置的值为 16px。在根元素中的任何段落 (或者那些浏览器没有设置默认大小的元素),会有一个最终的大小值:16px。其他元素也许有默认的大小,比如 h1元素有一个 2em 的默认值,所以它的最终大小值为 32px。比如:
1 | html { |
字体样式,字体粗细,文本转换和文本装饰
CSS 提供了 4 种常用的属性来改变文本的样子:
font-style 用来打开和关闭文本 italic (斜体)。 可能的值如下 (你很少会用到这个属性,除非你因为一些理由想将斜体文字关闭斜体状态):
normal
: 将文本设置为普通字体 (将存在的斜体关闭)italic
: 如果当前字体的斜体版本可用,那么文本设置为斜体版本;如果不可用,那么会利用 oblique 状态来模拟 italics。oblique
: 将文本设置为斜体字体的模拟版本,也就是将普通文本倾斜的样式应用到文本中。
font-weight: 设置文字的粗体大小。这里有很多值可选 (比如 -light, -normal, -bold, -extrabold, -black, 等等), 不过事实上你很少会用到
normal
和bold
以外的值:normal
,bold
: 普通或者加粗的字体粗细lighter
,bolder
: 将当前元素的粗体设置为比其父元素粗体更细或更粗一步。100
–900
: 数值粗体值,如果需要,可提供比上述关键字更精细的粒度控制。
text-transform: 允许你设置要转换的字体。值包括:
none
: 防止任何转型。uppercase
: 将所有文本转为大写。lowercase
: 将所有文本转为小写。capitalize
: 转换所有单词让其首字母大写。full-width
: 将所有字形转换成全角,即固定宽度的正方形,类似于等宽字体,允许拉丁字符和亚洲语言字形(如中文,日文,韩文)对齐。
text-decoration:设置/取消字体上的文本装饰 (你将主要使用此方法在设置链接时取消设置链接上的默认下划线。) 可用值为:
none
: 取消已经存在的任何文本装饰.underline
: 文本下划线.overline
: 文本上划线line-through
:穿过文本的线
文字阴影
你可以为你的文本应用阴影,使用 text-shadow
属性。这最多需要 4 个值,如下例所示:
1 | text-shadow: 4px 4px 5px red; |
四个属性如下:
- 阴影与原始文本的水平偏移,可以使用大多数的 CSS 单位, 但是 px 是比较合适的。这个值必须指定。
- 阴影与原始文本的垂直偏移;效果基本上就像水平偏移,除了它向上/向下移动阴影,而不是左/右。这个值必须指定。
- 模糊半径 - 更高的值意味着阴影分散得更广泛。如果不包含此值,则默认为0,这意味着没有模糊。可以使用大多数的 CSS 单位 。
- 阴影的基础颜色,可以使用大多数的 CSS 颜色单位. 如果没有指定,默认为
black
.
注意: 正偏移值可以向右移动阴影,但也可以使用负偏移值来左右移动阴影,例如
-1px -1px
.
多种阴影
您可以通过包含以逗号分隔的多个阴影值,将多个阴影应用于同一文本,例如:
1 | text-shadow: -1px -1px 1px #aaa, |
文本布局
文本对齐
text-align属性用来控制文本如何和它所在的内容盒子对齐。可用值如下,并且在与常规文字处理器应用程序中的工作方式几乎相同:
left
: 左对齐文本。right
: 右对齐文本。center
: 居中文字。justify
: 使文本展开,改变单词之间的差距,使所有文本行的宽度相同。你需要仔细使用,它可以看起来很可怕。特别是当应用于其中有很多长单词的段落时。
行高
line-height
属性设置文本每行之间的高,可以接受大多数单位,不过也可以设置一个无单位的值,作为乘数,通常这种是比较好的做法。无单位的值乘以 font-size
来获得 line-height
。当行与行之间拉开空间,正文文本通常看起来更好更容易阅读。推荐的行高大约是 1.5–2 (双倍间距。) 所以要把我们的文本行高设置为字体高度的1.5倍,你可以使用这个:
1 | line-height: 1.5; |
字母和单词间距
letter-spacing
和 word-spacing
属性允许你设置你的文本中的字母与字母之间的间距、或是单词与单词之间的间距。你不会经常使用它们,但是可能可以通过它们,来获得一个特定的外观,或者让较为密集的文字更加可读。它们可以接受大多数单位。
例:
1 | p::first-line { |
首行缩进
text-indent
指定文本内容的第一行前面应该留出多少的水平空间。比如:
1 | text-indent:2em;/*缩进两个字符大小*/ |
Font 简写
许多字体的属性也可以通过 font
的简写方式来设置 . 这些是按照以下顺序来写的: font-style
, font-variant
, font-weight
, font-stretch
, font-size
, line-height
, and font-family
.
如果你想要使用
font
的简写形式,在所有这些属性中,只有font-size
和font-family
是一定要指定的。
font-size
和line-height
属性之间必须放一个正斜杠。
一个完整的例子如下所示:
1 | font: italic normal bold normal 3em/1.5 Helvetica, Arial, sans-serif; |