首发于 前端一万小时 | 从零基础到轻松就业
(05)CSS 给文本加样式:① 字体属性 | CSS

(05)CSS 给文本加样式:① 字体属性 | CSS


❗️❗️❗️
以下链接为本文最新勘误篇章—— 《CSS 给文本加样式:① 字体属性》


上方面试题“参考答案详解”,请 点击此处查看获取方式!


前言: 作为 Web 页面最基本的组成部分,“文本”的重要性不言而喻。对于“文本”来说,我们需要掌握两个与之相关的属性——“字体属性”和“文本属性”。

本篇,我们先学习“CSS 字体属性”。

1 定义“文本”的字体系列

font-family 属性用于定义“文本”的字体系列。

首先,我们平时所说的“字体”并不只是单个的字体,而是一个“字体系列”。

除了如 Times、Verdana、Helvetica 或 Arial 等各种“特定字体系列”外,CSS 还定义了 5 种“通用字体系列”。

所谓“通用字体系列”是指:拥有相似外观的字体系统组合。理论上,用户安装的任何字体系列往往都会落入到这 5 种通用系列当中(实际工作中的特例除外)。

1.1 5 种通用字体系列

这种字体的特征就是:我们无法很容易地将其归于以上 4 种字体中。它主要被用在图片中,字体看起来很艺术,实际网页上用得不多。

1.2 工作中,怎么指定“字体系列”

假如需求如下:我想对 p 指定字体为 Times 显示,但同时也接受以下的 serif 字体顺序(TimesNR、Georgia、New Century Schoolbook、New York)。

那么往往我们会进行如下代码书写:

❗️为什么这么写:

由于在一个跨平台的环境下,我们无法保证用户同样也安装了这些特定字体。

如果用户没有安装这几种字体,那么用户的浏览器就会使用一个默认的字体来显示这个 Web。对此,我们 Web 制作者将无法控制显示效果。

但,如果末尾加了一个 serif,则可以告诉用户的浏览器:即使你电脑里没有安装我以上的这些字体,那么也请使用一个你电脑里边安装了的“衬线体”来显示我的 p

当一个字体名中有一个或多个空格,或者如果字体名包括 #$ 之类的符号时,我们就必须用单引号把这个字体名引起来,以便浏览器识别。

另外一种情况是,如果你把上文的 5 种“通用字体系列”用单引号引起来,那么浏览器则会认为(或者你本来就想告诉浏览器):你需要一个与这 5 种字体系列同名的“特定字体”而不是“通用字体”。

2 定义“文本”的字体大小

font-size 属性用于定义“文本”的字体大小。

请先阅读文章 《CSS 值和单位 》中关于 em、rem 等的讲解。

在实际工作运用中:
在不考虑 IE8 及以下版本的前提下,我们完全可以一开始就将文档的 font-size 值设置为 10px,这样在之后的计算中就很简单了。所需要的 (r)em 值就是想得到的像素值除以 10,而不是浏览器默认大小的 16。这样我们就可以很轻松地调整 HTML 中我们想调整的不同类型文本的字体大小了。

3 定义“文本”的字体粗细

font-weight 属性用于定义“文本”的字体粗细。

关键字 100 ~ 900 为字体指定了 9 级加粗度。如果一个字体内置了这些加粗级别,那么这些数字就直接映射到预定义的级别,100 对应最细的字体变形,900 对应最粗的字体变形。

但,字体所拥有的字重的数量,实际上很少存在满足有 9 个字重刚好跟 100-900 的 CSS 字重一一对应的情况,通常字体拥有的字重数量为 4 到 6 个。当然,也不必担心,至少 400 和 700 对应的字重是每种字体必备的——数字 400 等价于 normal,而 700 等价于 bold。

实际工作中,我们一般最常用的还是 normal 和 bold 这两个值。用法举例:

如果将元素的加粗设置为 bolder,浏览器会设置比所继承值更粗的一个字体加粗。与之相反,关键词 lighter 则会导致浏览器将加粗度下移而不是上移。

4 定义“文本”的字体风格

font-style 属性用于定义“文本”的字体风格。

有以下几个值:

4.1 italic

如果当前字体的斜体版本可用,那么文本设置为斜体版本;如果不可用,那么浏览器会利用 oblique 状态来模拟 italics。例:

4.2 oblique

将文本设置为斜体字体的模拟版本,也就是将普通文本倾斜的样式应用到文本中。例:

4.3 normal

将文本设置为普通字体(将存在的斜体关闭)

5 定义“文本”的字体变形

font-variant 用于定义“文本”的字体变形。

对于 font-variant,它只有两个非继承值:默认值 normal 和 small-caps。normal 描述正常文本,small-caps 要求使用“小型大写字母”文本。

6 跳出限制,让“字体”有更多可能——字体图标

@font-face 规则,它允许网页开发者为其网页指定在线字体。 通过这种作者自备字体的方式,@font-face 可以消除对用户电脑字体的依赖。

“规则”写法如下:

以下我们以实际工作中常用的 iconfont 作说明:

小总结:

  1. 上述这些操作跟 @font-face 有什么关系?

现在我们把之前粘贴过来的代码在网站上打开,看看是个什么东西:

如图所示,结合阿里的工具,我们确实是既简单又方便的用了 @font-face 规则。

2. 字体图标的工作原理是怎样的,为什么可以这样用?

在文章 《① HTML 基础》中我们就了解到:

我们在编写 HTML 文档时, <meta charset="utf-8"> 这个标签是必须指定的,这是为了告诉浏览器,你应该用 utf-8 这种 Unicode 来解码。

换句话说,即使我们 HTML 文档里的文字全部直接用 Unicode 码来写也是完全没问题的——Unicode 码,可以认为是世界上任意一种文字的特定编号。

如果这样的话,基于“一个国家的文字,其他国家的人看来就是图标”这个点,那我们制作出来的任意“图标”也是都可以在页面上展示,并像“文字”一样被操作的。

只是一般的字体图标都不是现有的文字,都是一些流出来可扩展的 Unicode 码,换句话说,这些码你可以任意添加东西,但它不是已有的标准。

因此你需要用 @font-face 规则去声明一个字体(如上边及下边的操作说明)。

3. 为什么第三步不操作 Unicode,而操作 Font class ?

那我们操作一次看看有哪里不妥:

我们看到单纯的只是把 Unicode 码写在文档中,是不会显示出图标的。我们需要 @font-face 来声明一个下载字体:

复制并粘贴到 HTML 文档中查看效果:

同样都可以出来效果,背后也用的是同样的原理,但我们可以看到上图中,<body> 标签里的 <p><h1> 都是以 Unicode 码书写的,这种方法将不利于阅读和维护——单纯看代码,我们根本不知道这是个什么东西。


后记: 下篇文章我们将接着讨论“文本属性”,在学习到其中的 line-height 后,我们再接着这篇文章引入 font 属性。届时,“CSS 给文本加样式”将完全被我们掌握。

祝好,qdywxs ♥ you!

代做工资流水公司泰安制作车贷工资流水石家庄办银行流水襄阳做薪资银行流水贵阳个人工资流水 开具大连企业银行流水办理岳阳个人工资流水 样本菏泽流水账单图片岳阳打公司流水扬州背调流水代办哈尔滨自存流水公司西安车贷银行流水 打印邢台工作收入证明模板长春企业对私流水代做珠海打印贷款流水肇庆代做购房银行流水揭阳车贷银行流水 费用泰州银行流水账单制作洛阳收入证明代办湛江签证银行流水 公司嘉兴做工资流水账单哈尔滨打薪资流水单深圳代做车贷流水济宁转账银行流水代开绵阳办理公司银行流水宿迁查询银行流水修改武汉办贷款工资流水宁波房贷银行流水 代办台州代办对公账户流水保定收入证明开具商丘银行流水账单费用香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化