为什么前端项目里font-weight值不推荐使用数字,而是字重描述符?

简介: 为什么前端项目里font-weight值不推荐使用数字,而是字重描述符?

基本使用

取值:normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900

网络异常,图片无法展示
|

规范解读

W3C规范-fonts

核心点梳理:

  • 「font-weight」不是为了告诉浏览器以多高的字重来「绘制」文字,而是告诉其在「font-family」匹配到的一个字体集合中如何继续「匹配」符合字重要求的字体。
  • 通常情况下,一个特定的字体仅会包含少数的可用字重(实际效果还取决于字体包本身的支持情况)。若所指定的字重不存在直接匹配,则会通过字体匹配算法规则匹配使用邻近的可用字重
  • bolder、lighter表示其字重值是基于从其父元素继承而来的字重计算所得的,与normal、bold所代表的字重并无关系。

字重匹配规则

如果指定的font-weight数值,即所需的字重,能够在字体中找到对应的字重,那么就匹配为该对应的字重。否则,使用下面的规则来查找所需的字重并渲染:

  1. 如果所需权重小于 400,则按降序检查低于所需权重的权重,然后按升序检查高于所需权重的权重,直到找到匹配项。
  2. 如果所需权重大于 500,则按升序检查高于所需权重的权重,然后按降序检查低于所需权重的权重,直到找到匹配项。
  3. 如果所需权重为 400,则首先检查 500,然后使用所需权重小于 400 的规则。
  4. 如果所需权重为 500,则首先检查 400,然后使用所需权重小于 400 的规则。

官网示例之bolder、lighter

网络异常,图片无法展示
|

总结

  • 比用 normal/bold 更能体现不同 font-weight 的相对关系,而且使各处 font-weight 的写法统一——只有 400 和 700 才有 normal 和 bold 这样的等价写法,其他值都必须写数字。且中文网站极少用到 normal 和 bold 之外的 font-weight 值,实在没有必要写数字。
  • 由于用到 normal 和 bold 之外的 font-weight 值时,如果字体包不支持就会采用字重匹配规则,这就会跟预期效果有所偏差



相关文章
|
1月前
|
资源调度 前端开发 JavaScript
构建高效前端项目:现代包管理器与模块化的深度解析
【2月更文挑战第21天】 在当今快速演变的前端开发领域,高效的项目管理和代码组织已成为成功交付复杂Web应用的关键。本文将深入探讨现代前端包管理器如npm, yarn和pnpm的工作原理,以及它们如何与模块化编程实践(例如CommonJS、ES6模块)协同工作以优化开发流程。我们将剖析这些工具的内部机制,了解它们如何解决依赖冲突,提高安装速度,并保证项目的健壮性。同时,本文还将介绍模块化编程的最佳实践,包括代码拆分、重用和版本控制,帮助开发者构建可维护且性能卓越的前端项目。
|
1月前
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
1月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
2月前
|
缓存 JavaScript 前端开发
IDEA启动VUE前端项目
IDEA启动VUE前端项目操作流程
|
3月前
|
前端开发 JavaScript 测试技术
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
|
3月前
|
缓存 前端开发 JavaScript
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!(三)
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!
|
26天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
102 0
|
3月前
|
前端开发 API Docker
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
42 0
|
3天前
|
缓存 前端开发 JavaScript
前端vue3分享——项目封装axios、vite使用env环境变量
前端vue3分享——项目封装axios、vite使用env环境变量
9 0
|
1月前
|
前端开发 JavaScript 测试技术
构建高效前端项目:模块化与组件化策略
【2月更文挑战第25天】 在现代网页开发中,随着用户对于网页性能和交互体验的期待不断提升,前端项目的复杂性也随之增加。为了应对这种复杂性并提高开发效率,本文将探讨模块化与组件化在前端项目中的应用策略。通过分析这两种方法的优势与适用场景,我们将揭示如何利用它们来优化项目结构,提升代码复用率,以及加快开发流程。
31 4