网站受到攻击怎么办,徐州便民信息网,做网站得每年续费吗,上海企业网站推广当前内容所在位置#xff08;可进入专栏查看其他译好的章节内容#xff09; 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 12.2 Web 字体12.3 谷歌字体12.4 font-fac… 当前内容所在位置可进入专栏查看其他译好的章节内容 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 12.2 Web 字体12.3 谷歌字体12.4 font-face 的工作原理 ✔️ 12.4.1 字体格式与回退处理 ✔️12.4.2 同一字型的多种变体形式 ✔️ 12.5 性能因素考量 文章目录 12.4 font-face 的工作原理及用法 How font-face works12.4.1 字体格式与回退处理 Font formats and fallbacks12.4.2 同一字型的多种变体形式 Multiple variants of the same typeface 《CSS in Depth》新版封面
12.4 font-face 的工作原理及用法 How font-face works
提供字体服务的网站把添加字体的工作做得如此简单易用但我们仍然有必要了解一下它们是怎么实现的。先来看看谷歌提供的 CSS 文件。在浏览器中打开 URL https://fonts.googleapis.com/css2?familyRoboto:wght300familySansita:wght800displayswap就可以看到对应字体的 CSS 样式。我们复制其中的一部分如代码清单 12.8 所示
代码清单 12.8 定义谷歌字体的示例样式代码
/* 拉丁字符 */
font-face { /* 每条 font-face 规则定义一个字体可在页面其他 CSS 中使用 */font-family: Roboto; /* 声明该字体的名称 */font-style: normal; /* 定义该 font-face 规则使用的字体样式 */font-weight: 300; /* 定义该 font-face 规则使用的字体粗细 */font-display: swap;/* 指明字体文件的具体位置 */src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format(woff2);unicode-range: U0000-00FF, U0131, U0152-0153, U02BB-02BC, U02C6,U02DA, U02DC, U0304, U0308, U0329, U2000-206F, U2074, U20AC, U2122, U2191, U2193, U2212, U2215, UFEFF, UFFFD; /* 该 font-face 规则使用的 Unicode 编码范围 */
}/* 拉丁字符 */
font-face {font-family: Sansita;font-style: normal;font-weight: 800;font-display: swap;src: url(https://fonts.gstatic.com/s/sansita/v11/QldLNTRRphEb_-V7JLmXWX5-w4dsz_k.woff2) format(woff2);unicode-range: U0000-00FF, U0131, U0152-0153, U02BB-02BC, U02C6,U02DA, U02DC, U0304, U0308, U0329, U2000-206F, U2074, U20AC,U2122, U2191, U2193, U2212, U2215, UFEFF, UFFFD;
}font-face 规则定义了可在页面 CSS 中使用浏览器字体。这里的第一条规则实际上是说“如果页面需要渲染 font-family 为 Roboto 的拉丁字符并且这些字符使用了常规的字体样式非斜体字、字体粗细为 300那么就使用该字体文件”。同理第二条规则定义了一个字体粗细为 800 的粗体版 Sansita 字体。
font-family 则定义了引用字体的名称以便在样式表的其他地方生效。src 属性则提供了让浏览器下载该字体的具体位置。
而设置 unicode-range 属性并非 font-face 正常工作的必要条件。谷歌将其用于性能优化将最常用的拉丁字符放在一个较小的字体文件中而将其他字符的扩展集extended sets放在额外的文件中。这样拉丁字符就可以快速下载而扩展集仅在页面需要时才被浏览器下载。扩展字符集会在谷歌样式表中各自获取对应的 font-face 规则例如西里尔字符Cyrillic、希腊字符Greek、越语字符Vietnamese等等。鉴于其基本原理是共通的因此为确保简洁代码清单 12.8 中省略了这部分内容。
这里的关键点在于如果要使用的是线上暂不提供托管服务的付费版字体您至少得知道如何定义自己的 font-face 规则。通常我会先用谷歌字体检索出自己喜欢的、有免费许可的字体然后将它们下载下来并自行托管。
12.4.1 字体格式与回退处理 Font formats and fallbacks
谷歌提供的这些字体文件都采用了一种名为 WOFF2 的格式。WOFF 即 Web Open Font FormatWeb 开发字体格式的缩写是一种专为 Web 使用而设计的字体压缩格式。当前所有的现代浏览器都支持 WOFF2 格式而更新、更好的字体格式还会定期出现。为了应对这种局面比较稳健的解决方案应该是同时给 WOFF2 与后续的新字体格式提供 URL。代码清单 12.9 假设了一种预想的 WOFF3 格式并演示了如何基于浏览器的实际支持情况来同时提供这两种配置方案为提高代码的可读性这里采用了简化版的 URL。
代码清单 12.9 支持回退到另一种格式的 Web 字体声明
font-face {font-family: Roboto;font-style: normal;font-weight: 300;src: local(Roboto Light), local(Roboto-Light),url(https://example.com/roboto.woff3) format(woff3), /* 使用列表中支持的首个字体格式 */url(https://example.com/roboto.woff2) format(woff2); /* 不支持 WOFF3 字体的浏览器将回退至 WOFF2 格式 */
}以上示例代码还用到了一个特殊的 local() 函数用于指示浏览器先检查用户操作系统中是否已经安装了给定名称的字体。如果确实安装了则启用该字体否则将发起一个网络请求下载对应字体。
Web 字体刚刚兴起的时候由于各个浏览器支持的字体格式参差不齐开发者不得不引入四五种不同格式的字体而现在WOFF2 格式已经得到了各浏览器厂商的广泛支持因此除非出现更新的字体格式通常情况下无需考虑上述写法。
12.4.2 同一字型的多种变体形式 Multiple variants of the same typeface
如果要用到同种字型typeface下的多种字体那么每一种字体都需要定义各自的 font-face 规则。如果在谷歌字体界面上同时选取了 Roboto 字型的细体版和粗体版谷歌就会提供一个形如 https://fonts.googleapis.com/css2?familyRoboto:wght300;700displayswap 的样式表 URL。在浏览器中打开该 URL 并查看样式代码这里截取了其中一部分如代码清单 12.10 所示
代码清单 12.10 定义同一字型下两种不同粗细的字体
/* 拉丁字符 */
font-face {font-family: Roboto; /* 细体 Roboto */font-style: normal; /* 细体 Roboto */font-weight: 300; /* 细体 Roboto */font-display: swap;src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format(woff2);unicode-range: U0000-00FF, U0131, U0152-0153, U02BB-02BC, U02C6,U02DA, U02DC, U0304, U0308, U0329, U2000-206F, U2074, U20AC,U2122, U2191, U2193, U2212, U2215, UFEFF, UFFFD;
}
…
/* 拉丁字符 */
font-face {font-family: Roboto; /* 粗体 Roboto */font-style: normal; /* 粗体 Roboto */font-weight: 700; /* 粗体 Roboto */font-display: swap;src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format(woff2);unicode-range: U0000-00FF, U0131, U0152-0153, U02BB-02BC, U02C6,U02DA, U02DC, U0304, U0308, U0329, U2000-206F, U2074, U20AC,U2122, U2191, U2193, U2212, U2215, UFEFF, UFFFD;
}上述代码片段展示了两种不同 Roboto 字体的定义方法。如果页面需要渲染字体粗细为 300 的 Roboto 字体则会启用第一种定义若是需要渲染字体粗细为 700 的 Roboto 字体则会启用第二种。
但如果页面样式需要用到其他版本的字体如 font-weight: 500 或者 font-style: italic浏览器则会尽可能从已有的两种字体定义做近似选择。也就是说通常情况下浏览器会选择与所需字体更接近的版本。不过这取决于浏览器偶尔也可能会把某个已有字体变为斜体或者加粗来趋近预期的效果例如通过使用几何学方法来实现产生 “伪加粗”“faux bold”或者 “伪斜体字”“faux italic”效果。但这样的效果肯定不如原生设计的字体效果好。因此遇到只能使用 Web 字体中仅限 font-face 规则声明的字体粗细与样式的情况时您应当慎之又慎。
在使用谷歌字体或者其他字体服务提供商时通过界面操作就可以获取到所需的代码。有时可能服务商没有提供您要找的字体此时就需要自己搭建字体服务利用 font-face 规则来定义浏览器需要的字体格式。 关于《CSS in Depth》中译本书名《深入解析 CSS》 第 1 版第 2 版读者评分原版4.7亚马逊中文版9.3豆瓣原版5.0亚马逊中文版暂无待出版出版时间原版2018 年 3 月中文版2020 年 4 月原版2024 年 7 月中文版暂无待出版原价原版$44.99中文版139.00原版$59.99中文版暂无待出版现价原版$36.49中文版52.54 起步原版$52.09中文版暂无待出版原版国内预订起步价 461.00起步价 750.00
本专栏为该书第 2 版高分译文专栏全网首发精译精校持续更新计划今年内完成全书翻译敬请期待
目前已完结的章节可进入本专栏查看详情连载期间完全免费 第一章 层叠、优先级与继承已完结 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位已完结 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型已完结 3.1 常规文档流3.2 盒模型3.3 元素的高度3.4 负的外边距3.5 外边距折叠3.6 容器内的元素间距问题3.7 本章小结 第四章 Flexbox 布局已完结 4.1 Flexbox 布局原理4.2 弹性子元素的大小4.3 弹性布局的方向4.4 对齐、间距等细节处4.5 本章小结 第五章 网格布局已完结 5.1 构建基础网格5.2 网格结构剖析 上 5.2.1 网格线的编号下5.2.2 网格与 Flexbox 配合下 5.3 两种替代语法 5.3.1 命名网格线5.3.2 命名网格区域 5.4 显式网格与隐式网格上 5.4.1 添加变化 中5.4.2 让网格元素填满网格轨道下 5.5 子网格全新增补内容5.6 对齐相关的属性5.7 本章小结 第六章 定位与堆叠上下文已完结 6.1 固定定位 6.1.1 创建一个固定定位的模态对话框6.1.2 在模态对话框打开时防止屏幕滚动6.1.3 控制定位元素的大小 6.2 绝对定位 6.2.1 关闭按钮的绝对定位6.2.2 伪元素的定位问题 6.3 相对定位 6.3.1 创建下拉菜单上6.3.2 创建 CSS 三角形下 6.4 堆叠上下文与 z-index 6.4.1 理解渲染过程与堆叠顺序上6.4.2 用 z-index 控制堆叠顺序上6.4.3 深入理解堆叠上下文下 6.5 粘性定位6.6 本章小结 第七章 响应式设计已完结 7.1 移动端优先设计原则上篇 7.1.1 创建移动端菜单下篇7.1.2 给视口添加 meta 标签下篇 7.2 媒体查询上篇 7.2.1 深入理解媒体查询的类型上篇7.2.2 页面断点的添加中篇7.2.3 响应式列的添加下篇 7.3 流式布局7.4 响应式图片7.5 本章小结 第八章 层叠图层及其嵌套 8.1 用 layer 图层来操控层叠规则上篇 8.1.1 图层的定义上篇8.1.2 图层的顺序与优先级下篇8.1.3 revert-layer 关键字下篇 8.2 层叠图层的推荐组织方案8.3 伪类 :is() 和 :where() 的用法8.4 CSS 嵌套的使用 8.4.1 嵌套选择器的使用8.4.2 深入理解嵌套选择器8.4.3 媒体查询及其他 规则 的嵌套 8.5 本章小结 第九章 CSS 的模块化与作用域 9.1 模块的定义 9.1.1 模块和全局样式9.1.2 一个简单的 CSS 模块9.1.3 模块的变体9.1.4 多元素模块 9.2 将模块组合为更大的结构 9.2.1 模块中多个职责的拆分9.2.2 模块的命名 9.3 CSS 的作用域 9.3.1 CSS 作用域的就近原则9.3.2 划定作用域的边界9.3.3 CSS 中的隐式作用域9.3.4 关于 CSS 作用域与层叠图层 9.4 CSS 模式库9.5 本章小结 第十章 CSS 容器查询 10.1 容器查询的一个简单示例 10.1.1 容器尺寸查询的用法 10.2 深入理解容器 10.2.1 容器的类型10.2.2 容器的名称10.2.3 容器与模块化 CSS 10.3 与容器相关的单位10.4 容器样式查询的用法 10.4.1 将模块与所在容器解耦10.4.2 减少重复代码 10.5 本章小结 第 11 章 颜色与对比 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法RGB、Hex、HSL、HWB、LAB/OKLAB、LCH/OKLCH 11.3 利用 OKLCH 处理颜色上篇 11.3.4 从页面其他颜色衍生出新颜色下篇 11.4 思考字体颜色的对比效果11.5 本章小结 附录 附录ACSS 选择器参考附录BCSS 预处理器简介
文章转载自: http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.snlxb.cn.gov.cn.snlxb.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn http://www.morning.rykw.cn.gov.cn.rykw.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.mlcnh.cn.gov.cn.mlcnh.cn http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn http://www.morning.cpmwg.cn.gov.cn.cpmwg.cn http://www.morning.smspc.cn.gov.cn.smspc.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.kdrjd.cn.gov.cn.kdrjd.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.cfmrb.cn.gov.cn.cfmrb.cn http://www.morning.qhnmj.cn.gov.cn.qhnmj.cn http://www.morning.simpliq.cn.gov.cn.simpliq.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.pbdnj.cn.gov.cn.pbdnj.cn http://www.morning.ffhlh.cn.gov.cn.ffhlh.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn http://www.morning.tplht.cn.gov.cn.tplht.cn http://www.morning.qiyelm.com.gov.cn.qiyelm.com http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.tjpmf.cn.gov.cn.tjpmf.cn http://www.morning.grpfj.cn.gov.cn.grpfj.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.srnth.cn.gov.cn.srnth.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.pqwrg.cn.gov.cn.pqwrg.cn http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn http://www.morning.wlnr.cn.gov.cn.wlnr.cn http://www.morning.fwllb.cn.gov.cn.fwllb.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.cgthq.cn.gov.cn.cgthq.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.lbhck.cn.gov.cn.lbhck.cn http://www.morning.dwkfx.cn.gov.cn.dwkfx.cn http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn http://www.morning.ndtmz.cn.gov.cn.ndtmz.cn http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.kpbgp.cn.gov.cn.kpbgp.cn http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.bpzw.cn.gov.cn.bpzw.cn http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.lgmty.cn.gov.cn.lgmty.cn http://www.morning.pthmn.cn.gov.cn.pthmn.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.rhfh.cn.gov.cn.rhfh.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.hffjj.cn.gov.cn.hffjj.cn http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn http://www.morning.dpbdq.cn.gov.cn.dpbdq.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.slmbg.cn.gov.cn.slmbg.cn