如何在Semantic UI中引入自定义字体(替代Google Fonts)
嘿,别担心,这个框架确实支持自定义本地字体,只是没有像Google Fonts那样专门的一键配置项,得手动结合CSS标准写法和框架的变量系统来实现,我给你梳理具体步骤:
1. 先放好字体文件
把你的自定义字体文件(建议至少准备woff2和woff格式,兼容大部分浏览器)放到项目的静态资源目录里,比如/src/site/assets/fonts/这个路径,确保构建工具能识别并打包这些文件。
2. 声明自定义字体
打开/src/site/globals/site.less(如果你的项目用的是Less预处理器,要是用的是CSS就对应site.css),添加标准的@font-face规则:
@font-face { font-family: 'MyCustomFont'; src: url('../assets/fonts/MyCustomFont-Regular.woff2') format('woff2'), url('../assets/fonts/MyCustomFont-Regular.woff') format('woff'), url('../assets/fonts/MyCustomFont-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; font-display: swap; // 优化字体加载体验 }
如果你的字体有粗体、斜体等变种,记得分别添加对应的@font-face,修改font-weight和font-style就行。
3. 全局替换默认字体
回到你熟悉的/src/site/globals/site.variables,找到字体相关的变量,把它们替换成你的自定义字体名称:
// 替换全局正文字体 @fontFamily: 'MyCustomFont', sans-serif; // 如果需要替换标题字体,也一起修改 @fontFamilyHeader: 'MyCustomFont', sans-serif;
额外注意点
如果你的项目用了Webpack这类构建工具,要确保配置了字体文件的处理规则(比如用asset/resource或者file-loader),这样字体文件能被正确复制到构建后的输出目录,不然页面可能找不到字体文件。
其实核心就是利用CSS的标准@font-face来引入本地字体,再通过框架的变量系统把自定义字体全局应用起来,框架本身完全兼容这种方式,只是没有单独做一个配置项而已~
内容的提问来源于stack exchange,提问作者SML




