@font-face在vue中的使用

摘要:
您可以使用css3中添加的font face属性来确定如何在vue项目中使用它。嗯,我已经编写了以下方法:在此之前,我想说,我在编写上述代码时遇到的问题是格式。我还在互联网上复制和粘贴格式。我被误导写了格式,发现字体不起作用。然后我删除了格式标识符,发现字体再次生效。所以真正包含字体的是HeadTopBar。css由预处理器和css加载器处理

在项目中使用指定字体应该是正常操作了。可以使用css3新增的font-face这个属性来搞事情

在vue项目中如何使用,额,我写了以下几种方式:

@font-face在vue中的使用第1张

 在这之前要说下写上面的代码时碰到的问题

format('truetype')

我之前也是网上复制粘贴,被误导写成了

format('ttf')

发现字体不生效,然后把format这个标识符去掉,发现又生效了。所以我就看了下format这个属性的用法:

@font-face在vue中的使用第2张

翻译:

外部引用由URL组成,后跟可选提示,描述此URL引用的字体资源的格式。格式提示包含以逗号分隔的格式字符串列表,表示众所周知的字体格式。

如果格式提示仅指示不支持或未知的字体格式,则用户代理(浏览器)必须跳过下载字体资源。如果未提供格式提示,则用户代理应下载字体资源。

这就解释了为什么当我写成 ttf时不生效。去掉ttf就生效了。

@font-face在vue中的使用第3张

 上图是支持的格式描述,所谓ttf就是truetype,改成truetype就可以了。有兴趣的同学可以继续深入  https://drafts.csswg.org/css-fonts-3/#src-desc

第一种方式:

1.将css放在public中,再从index.html中引入

@font-face在vue中的使用第4张

因为public是静态文件夹,打包器并不会对这些进行处理,并且vue-cli 3也这么友好的提示了

@font-face在vue中的使用第5张

第二种方式

2.将css放在src中然后import引入

@font-face在vue中的使用第6张

上面的两种方式都能行的通,但是有人可能会注意到,我写的是font.css格式的文件,而不是styl格式的文件,因为我把font.css换成styl格式之后,构建就报错了

@font-face在vue中的使用第7张

我初步怀疑是预处理器或者是vue-loader不支持ttf格式的文件,这个还需要进一步去验证,不过发现有同学和我遇到同样的问题,不过他好像是使用的scss预处理器。

https://segmentfault.com/q/1010000016981396

 /*****************************************更新部分*********************************************/

天噜啦,知道为啥会报错吗,错误提示很明显,这个找不到相对模块,也就是找不到我这个STXinwei.ttf文件,和什么预处理和什么vue-loader屁关系都没有

是因为

@font-face在vue中的使用第8张

注意:是相对于包含@font-size规则的样式表的位置进行解析。(还好我翻译了下这个页面,对这个有点印象)

这也就是为什么我引入font.styl,然后再使用这个字体的时候构建提示找不到模块。因为我在font.styl中引入字体的资源是相对font.styl的路径引用的,但是font-face是相当于包含它的样式表的位置进行解析的。

我在HeadTopBar.vue文件中引用了font.styl,那么font-face的url的引用是相对于HeadTopBar.vue文件路径的,

所以我把HeadTopBar.vue文件中的HeadTopBar.vue资源路径改为相对于HeadTopBar.vue 去引用,构建就不会报错啦

@font-face在vue中的使用第9张

真是万万没想到啊,以下是我的文件路径和代码

@font-face在vue中的使用第10张

 @font-face在vue中的使用第11张

综上。

至于为什么.css格式的文件就没问题,我的理解是css格式的文件相对于预处理器styl格式的文件,是一个整体,是一个真正意义上的包含font-face的样式表。

而styl格式文件被引用是作为一个模块,作为一个部分去应用到HeadTopBar.vue这个文件中。所以真正包含font-face的是经过预处理器和css-loader处理过的HeadTopBar.css

免责声明:文章转载自《@font-face在vue中的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker的常用命令数据挖掘竞赛常用代码段下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

无限加载 vue用infinite-loading插件和阿波罗请求

1.npm install vue-infinite-loading --save 2.npm install --save vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag   (https://akryum.gi...

Linux安装最新版Vue或者指定版本

ubuntu安装最新版Vue或者指定版本 首先已经安装了node.js 使用命令查看 $: node -v v10.17.0 再使用如下命令: npm install -g @vue/cli 安装后查看: $: vue -V @vue/cli 4.3.1 安装制定版本: #这个命令是百度的具体没有用过 npm install -g @vue/cli...

手把手教你写vue插件并发布(二)

  前记:上一篇 https://www.cnblogs.com/adouwt/p/9211003.html, 说到了一个完整的vue插件开发、发布的流程,总结下来就讲了这么一个事,如何注入vue, 如果封装vue插件,如何测试vue插件,以及如何发布vue插件到npm。但是,这里开发测试到发布是分开在两个项目的,未免有些多余,今天的笔记讲的就是在上一篇的...

采用vue编写的功能强大的swagger-ui页面

think-swagger-ui-vuele swagger-ui有非常多的版本,觉得不太好用,用postman,每个接口都要自己进行录入。所以在基于think-vuele进行了swagger格式json的解析,自己实现了一套swaggerui界面。 swagger分为后端数据提供方方和前端页面展示请求方。从一定角度来看,swagger是一种标准的数据格式...

vue项目 elemnet 升级版本

打开cmd命令 先卸载项目中的 node_modules rimraf node_modules 卸载项目中的element-ui npm uninstall element-ui -S 重新安装element-ui npm install element-ui -S 安装依赖 npm install npm run dev 飞起~  ...

vuejs绑定img 的src

1.显示本地图片: <img src="http://t.zoukankan.com/common/images/auth-icon.png" />   2.绑定变量: <img class="" :src="http://t.zoukankan.com/defaultIcon" /> data() {   return {  ...