FontAwesome SVG图标与Vuetify - 如何在v-icon / prepend-icon中使用?

7

我是新手Vue用户,不知道如何在v-icon和prepend-icon中使用FA SVG图标。如果我使用:

<font-awesome-icon :icon="dekstop" color="gray"></font-awesome-icon>

图标已显示,但我如何在v-icon和prepend-icon中使用FA SVG图标? 示例:
            <v-autocomplete v-model="replUser"
            :items="users" 
            color="accent white--text" 
            label="User"
            prepend-icon="dekstop></i>" // i can use material font icons here, but FA SVG not worked
            >

            </v-autocomplete>

我的 main.js:

import Vue from 'vue'
import Vuetify from 'vuetify/lib'
// import colors from 'vuetify/es5/util/colors'
import './plugins/vuetify'
import App from './App.vue'
import i18n from './i18n'
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, {
  iconfont: 'faSvg',
})
Vue.config.productionTip = false

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

我做错了什么?

2个回答

9
如果您想在中使用svg图标,则需要通过$vuetify.icons对象访问它们。在中的任何其他文本将被解释为webfont/css类。
但是,要使用$vuetify.icons对象,您应该注册自定义图标。例如:
import Vue from "vue";
import Vuetify from "vuetify";
import { library } from "@fortawesome/fontawesome-svg-core";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faVuejs } from "@fortawesome/free-brands-svg-icons";

Vue.component("font-awesome-icon", FontAwesomeIcon); // Register component globally
library.add(faVuejs); // Include needed icons.

Vue.use(Vuetify, {
  icons: {
    vue: {
      component: FontAwesomeIcon,
      props: {
        icon: ["fab", "vuejs"]
      }
    }
  }
});

现在你可以使用vue-brand图标:

<v-icon>$vuetify.icons.vue</v-icon>
<v-text-field prepend-icon="$vuetify.icons.vue"/>

此外,您可以通过font-awesome-icon无需注册即可使用:

<font-awesome-icon :icon="['fab', 'vuejs']" />
<v-text-field>
    <font-awesome-icon :icon="['fab', 'vuejs']" slot="prepend"/>
</v-text-field>

开箱即用,vuetify 预设了一组图标配置,可以与 SVG 关联使用:

...
import { fas } from "@fortawesome/free-solid-svg-icons";
...
library.add(fas);
...
Vue.use(Vuetify, {
  iconfont: "faSvg"
});

但是要使用它,您需要再次调用 $vuetify.icons(vuetify只是将预设包装成组件):

<v-icon>$vuetify.icons.warning</v-icon>

完整示例代码沙盒


-1

来自 Vuetify 文档

Font Awesome 也被支持。只需使用 fa- 前缀的图标名称。 请注意,您仍需要在项目中包含 Font Awesome 图标。

也许这会对您有所帮助。但是,没有您的示例代码,我无法确定。

    <v-autocomplete v-model="replUser"
      :items="users" 
      color="accent white--text" 
      label="User"
      prepend-icon="fa-dekstop">
    </v-autocomplete>

这个回答甚至没有考虑到 OP 要求 SVG 版本。 - fnagel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接