vue.js - 如何在 Element UI 中使用 Font Awesome 5 图标

标签 vue.js sass font-awesome element-ui

我已经在我的一个 Vue 项目中使用 Element-UI 几天了,今天我意识到该框架提供的图标集合非常缺乏。我寻找一种将 FontAwesome 5 添加到项目中的方法,并按照此处提供的链接和说明进行操作:Element-UI and Font Awesome .

不幸的是,这不起作用。这些说明适用于旧版本的 Font Awesome 和 Element UI。

这是我尝试过的:

main.ts

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import VueSweetalert2 from 'vue-sweetalert2';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import '@/assets/scss/tailwind.scss';
import axios from 'axios';
import VueAxios from 'vue-axios';
import '@/assets/scss/main.scss';

Vue.config.productionTip = false;
Vue.config.devtools = true;

Vue.use(ElementUI);
Vue.use(VueSweetalert2);
Vue.use(VueAxios, axios);

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

main.scss

[class^="el-icon-fa"],
[class*=" el-icon-fa"] {
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome !important;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

@import url('../../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss');
@fa-css-prefix: el-icon-fa;

最佳答案

就您的情况而言,字体名称似乎不正确。请尝试使用 Font Awesome 5 Free

到目前为止,文档对此还不是很清楚,所以这是我使用的方法。请注意,您导入的文件取决于您使用的是 Font Awesome 5 免费版还是专业版。

这些示例导入所有可用字体,因此请务必注释掉您不会使用的字体。

Font Awesome 5 免费

将以下 SCSS 添加到您的应用中,例如在App.vue中:

// Import Font Awesome 5 Free
$fa-css-prefix: 'el-icon-fa';
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts';

@import '~@fortawesome/fontawesome-free/scss/fontawesome.scss';
@import '~@fortawesome/fontawesome-free/scss/regular.scss';
@import '~@fortawesome/fontawesome-free/scss/solid.scss';
@import '~@fortawesome/fontawesome-free/scss/brands.scss';

// Override Element UI's icon font
.fas {
  font-family: 'Font Awesome 5 Free' !important;
}

.fab {
  font-family: 'Font Awesome 5 Brands' !important;
}

Font Awesome 5 Pro

将以下 SCSS 添加到您的应用中,例如在App.vue中:

// Import Font Awesome 5 Pro
$fa-font-path: '~@fortawesome/fontawesome-pro/webfonts';
$fa-css-prefix: 'el-icon-fa';

@import '~@fortawesome/fontawesome-pro/scss/fontawesome.scss';
@import '~@fortawesome/fontawesome-pro/scss/light.scss';
@import '~@fortawesome/fontawesome-pro/scss/regular.scss';
@import '~@fortawesome/fontawesome-pro/scss/solid.scss';
@import '~@fortawesome/fontawesome-pro/scss/brands.scss';

// Override Element UI's icon font
.fal,
.far,
.fas {
  font-family: 'Font Awesome 5 Pro' !important;
}

.fab {
  font-family: 'Font Awesome 5 Brands' !important;
}

现在您可以将它们用作图标。请注意,fas|fal|fal|fab 前缀仍然是必需的:

<i class="fas el-icon-fa-check"></i>

或其他地方:

<el-input
  v-model="search"
  placeholder="Type something"
  prefix-icon="fas el-icon-fa-search"
>
</el-input>

如果您只使用一种字体,您可以使用一些其他样式来消除对前缀的需要:

// Use Font Awesome icons without a prefix
[class^="el-icon-fa"],
[class*=" el-icon-fa"] {
  font-family: 'Font Awesome 5 Free' !important; // Change this to 'Font Awesome 5 Pro' for pro
  font-style: normal;
  font-variant: normal;
  font-weight: normal;
  font-size: inherit;
  text-rendering: auto;
  display: inline-block;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
};

关于vue.js - 如何在 Element UI 中使用 Font Awesome 5 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617007/

相关文章:

javascript - 当购物车中已存在 id 时,Vue.js 购物车数量增加

javascript - 带有 v-for 和带有复选框的 v-model 的 Vuejs 在取消选中然后重新选中后无法清除

css - Rails 4 - Heroku,预编译 Assets 失败

html - 我无法显示 Font Awesome 图标。尝试使用多种方法导入 css

flutter - 我可以在Flutter Bottom导航栏中的图标周围添加间距吗?

vue.js - Vue computed Filter 结合 Ordering

javascript - Vuetify 工具栏被抽屉导航遮挡

sass - 可以使SASS @extend样式!重要吗?

responsive-design - 如何在 Zurb Foundation 4 中使用断点?

html - 我无法显示 Font Awesome 图标。尝试使用多种方法导入 css