Vue项目引入自定义字体

1. 问设计先要到字体文件(woff2|eot|ttf|otf)

因为项目对浏览器支持性要求不高,所以笔者只用了ttf文件(仅以苹方字体举例),一般情况ttf和woff就够用
: 如果要求支持Opera浏览器,就洗脑产品吧,让他放弃
字体文件的支持性可以去查Can i use

2. 开始进行配置

项目使用vue cli搭建,所以是修改 vue.config.js 文件

module.exports = {
	chainWebpack: (config) => {
		……
		config.module
	      .rule("fonts")
	      .test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i)
	      .use("url-loader")
	      .loader("url-loader")
	      .options({
	          limit: 4096,
	          fallback: {
	              loader: "file-loader",
	              options: {
	                  name: `/assets/fonts/[name].[ext]`
	              }
	          }
	      })
		……
	}
}

在项目 src/assets/fonts 文件夹下创建 font.less(项目使用的less,视具体情况创建文件)
在同文件夹下,放入 PingFang Medium.ttf
:文件名注意下,包括空格啥的。别问,问就是我踩了坑

@font-face {
  font-family: 'PingFang-RE';
  src: url('./PingFang\ Medium.ttf');
  font-weight: normal;
  font-style: normal;
}

修改全局 cssfont-family

@import './assets/fonts/font.less';
#app {
	font-family: 'PingFang-RE';
	font-display: swap;
}

这里需要注意一个小的优化点,一般情况下系统会在未下载完自定义字体的情况下先隐藏页面文本。
以前的方法是使用js脚本判断字体文件下载完成以后再添加css进行字体替换。

但是现在,有了 font-display 这个css属性,就可以达到我们的预期。
这里面用到的 swap 主要是为了能在自定义字体下载前先使用系统默认字体展示我们的页面,等自定义字体下载完成再替换。

具体关于 font-display 可以参考 字体预加载

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值