【问题标题】:Font-awesome SVG icons not working with Vuetify字体很棒的 SVG 图标不适用于 Vuetify
【发布时间】:2019-12-20 21:30:28
【问题描述】:

为什么这不是 FontAwesome SVG icons with Vuetify - how to use within v-icon/prepend-icon?

该问题显示了如何添加另一个图标并通过手动引用将其输出到组件中,而此问题 指的是预建组件中图标的变化 Vuetify 到 SVG 图标,无需手动覆盖 你的 Vue 组件,比如数据表的分页器。

我正在尝试在带有 Vuetify 的 Vue 项目中使用 font-awesome 的 SVG 图标,我已按照此处 Vuetify 安装页面上安装 SVG 字体包的指南进行操作

https://vuetifyjs.com/en/customization/icons#install-font-awesome-svg-icons

只包括他们指定的配置:

export default new Vuetify({
  icons: {
    iconfont: 'faSvg',
  },
})

图标只是在组件中显示为文本,示例:

搜索图标

数据表的页脚

据我了解,主要问题是它应该更改预构建组件的图标,否则您每次使用它时都需要手动指定组件图标。

我的完整 Vuetify 设置文件

import Vue from "vue"
import Vuetify from "vuetify"
import { library } from "@fortawesome/fontawesome-svg-core"
import { fas } from "@fortawesome/free-solid-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"

Vue.component("font-awesome-icon", FontAwesomeIcon)
library.add(fas)

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: "faSvg",
  },
})

【问题讨论】:

标签: vue.js font-awesome vuetify.js


【解决方案1】:

从 Vuetify 2.2.2 开始,这是本机支持的。

// src/plugins/vuetify.js

import Vue from 'vue'
import Vuetify from 'vuetify/lib'
import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { fas } from '@fortawesome/free-solid-svg-icons'

Vue.component('font-awesome-icon', FontAwesomeIcon) // Register component globally
library.add(fas) // Include needed icons

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'faSvg',
  },
})

详情请见here

【讨论】:

    【解决方案2】:

    我通过添加一个 dom wacher 获得了一半的成功。

    import Vue from "vue";
    import { library, dom } from "@fortawesome/fontawesome-svg-core";
    import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
    
    import { fas } from "@fortawesome/free-solid-svg-icons";
    
    import { far } from "@fortawesome/free-regular-svg-icons";
    
    library.add(fas, far);
    
    Vue.component("font-awesome-icon", FontAwesomeIcon);
    
    dom.watch();
    

    dom watcher 为图标拉取 svg。但不适用于其他组件,如数据表等

    <v-icon>fa-sign-out-alt</v-icon>
    

    对于那些图标,我必须手动定义每个值: https://vuetifyjs.com/en/customization/icons#using-custom-icons

    import Vue from "vue";
    import Vuetify from "vuetify/lib";
    import "./fontawesome";
    
    Vue.use(Vuetify);
    
    export default new Vuetify({
      icons: {
        iconfont: "faSvg",
        values: {
          checkboxOn: "fas fa-check-square",
          checkboxOff: "fas fa-square",
          checkboxIndeterminate: "fas fa-minus-square",
          menu: "fas fa-bars"
        }
      }
    });
    

    我仍然无法让复选框与 svg 一起使用。当我点击它时它不会动态变化。

    在这一点上,我将回到 webfonts。

    我宁愿使用 SVG,因此非常感谢任何解决方案

    【讨论】:

      【解决方案3】:

      试试这个

      import '@fortawesome/fontawesome-free/css/all.css'
      

      【讨论】:

      • 可以,但它不会以 SVG 格式输出图标
      猜你喜欢
      • 2021-03-21
      • 2015-04-02
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2017-01-16
      • 2016-02-13
      • 1970-01-01
      • 2020-12-01
      相关资源
      最近更新 更多