FontAwesome SVG icons with Vuetify - how to use within v-icon/prepend-icon?

痴心易碎 提交于 2020-01-02 13:15:19

问题


I'm new to Vue, can't find the exact answer how to use FA SVG icons in v-icon and prepend-icon. If i use:

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

Icons are displayed, but how i can use FA SVG icons in v-icon and prepend-icon? Sample:

            <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>

my 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')

What am I doing wrong?


回答1:


If you want to use svg icons in v-icon/prepend-icon, then you need to access them through $vuetify.icons object. Any other text in the v-icon/prepend-icon will be interpreted as webfont/css class.

But for use $vuetify.icons object you should register custom icons. Example:

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"]
      }
    }
  }
});

And now you can use vue-brand icon:

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

Also, you can use without register via font-awesome-icon:

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

Out of the box vuetify has a preset of icons config that can be associated with SVG:

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

But for use it you should call $vuetify.icons again (vuetify just wrap preset as component):

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

Full example codesandbox




回答2:


From Vuetify documention:

Font Awesome is also supported. Simply use the fa- prefixed icon name. Please note that you still need to include the Font Awesome icons in your project.

Maybe it helps you. But, without your sample code I can't be sure

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


来源:https://stackoverflow.com/questions/55207257/fontawesome-svg-icons-with-vuetify-how-to-use-within-v-icon-prepend-icon

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!