try 在Vue CLI 3中加载自定义本地字体时,字体仍然不会显示.我没有收到任何错误消息.inspector显示加载了正确的规则,但#应用程序上的字体会回落到serif.字体没有显示在my dist文件夹的任何位置.

我try 过在vue中添加加载程序.配置.js,更改url路径,将@font-face规则移动到不同的位置,将公共路径更改为""和"/",将SCS导入到主目录中.js.

字体加载:

@font-face {
    font-family: 'OpenSans-Regular';
    src: url('/assets/fonts/OpenSans-Regular.eot');
    src: url('/assets/fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
         url('/assets/fonts/OpenSans-Regular.otf') format('font-opentype'),
         url('/assets/fonts/OpenSans-Regular.woff') format('font-woff'),
         url('/assets/fonts/OpenSans-Regular.ttf') format('font-truetype'),
         url('/assets/fonts/OpenSans-Regular.svg#OpenSans-Regular') format('svg');
    font-weight: normal;
    font-style: normal;
}

并在应用程序内使用.vue:

<style lang="scss">
#app {
  font-family: 'OpenSans-Regular', serif;
}
</style>

这个样式放在我的main.scss文件中.文件 struct 如下所示:

src
  assets
    fonts
      OpenSans-Regular.eot
      OpenSans-Regular.woff
      etc
  styles
    main.scss
  App.vue
vue.config.js

vue.config.js文件如下:

module.exports = {
  publicPath: '/',
  css: {
    sourceMap: true,
    loaderOptions: {
      sass: {
        data: `@import "@/styles/main.scss";`
      }
    }
  },
  configureWebpack: {
    module: {
      rules: [{
        test: /\.(ttf|otf|eot|woff|woff2)$/,
        use: {
          loader: "file-loader",
          options: {
            name: "fonts/[name].[ext]",
          },
        },
      }]
    }
  }
}

我还try 了vue.config.js年的chainWebpack,但没有成功:

chainWebpack: config => {
    config
      .module
      .rule("file")
      .test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/,)
      .use("url-loader")
      .loader("url-loader")
      .options({
        limit: 10000,
        name: 'assets/fonts/[name].[ext]'
      })
      .end();
  }

推荐答案

你试过了吗

@font-face {
font-family: 'OpenSans-Regular';
src: url('~@/assets/fonts/OpenSans-Regular.eot');
src: url('~@/assets/fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
     url('~@/assets/fonts/OpenSans-Regular.otf') format('font-opentype'),
     url('~@/assets/fonts/OpenSans-Regular.woff') format('font-woff'),
     url('~@/assets/fonts/OpenSans-Regular.ttf') format('font-truetype'),
     url('~@/assets/fonts/OpenSans-Regular.svg#OpenSans-Regular') format('svg');
font-weight: normal;
font-style: normal;
}

适用于me Vue CLI 3,无vue.config.js个设置.

我的风格是这样的:

import Vue from 'vue';

import router from './router';
import store  from './store';
// eslint-disable-next-line
import styles from './scss/app.scss';

import App from './App.vue';

Vue.config.productionTip = false;

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app');

不确定这是否是一种好的做法.

Vue.js相关问答推荐

使用nuxt I18N验证规则消息翻译

VITE:无法为VUE单文件组件加载URL

将 html 文件移出 dist vite 中的 src 文件夹

v-model 修饰符返回空

在 VueJS 中,将变量而不是组件的字符串名称传递给动态组件的 :is 属性不起作用

v-slot: activator 中 {attrs} 参数的作用是什么?

带有参数的 Vuex 映射 Getter - 缓存?

将 Vue 应用程序挂载到主 Vue 应用程序的容器中

VuetifyJS:如何摆脱 v-stepper 组件的提升?

使用上传组件而不触发 POST 请求

VueJs this.method 不是函数?如何在 Vuejs 的另一个方法中调用一个方法?

在 Vue 中,如何使用 npm run build 将 .htaccess 包含到生产环境中?

将检测外部点击自定义指令从 Vue 2 迁移到 Vue 3

如何将 ASP.NET Core 2.1 与 Vue CLI 3 集成?

SVG 加载 vue-svg-loader; [Vue 警告]:无效的组件定义

如何从 v-for 创建的对象中绑定多个类?

Vue JS 在渲染前等待数据

使用 Vue.js 获取所有选中复选框的列表

在 Vue 单元测试中单击按钮时触发表单提交

Vuetify v-data-table 固定标题不起作用