vue 项目中css文件、字体图标、图片的引入和用法

我们一般会在 src 目录下的 assets 的文件夹里面统一放置 css 文件和图片。

一、css

1、全局引入

main.js 中:

import "./assets/css/common.css";

2、组件引入

<style lang="scss" scoped>
  @import "../../assets/css/base.scss"; /* 实际项目中写法根据自己的文件路径 */ 
</style>

 注意:组件内引入不能用@代理路径,会报错的!如:

@import "@/assets/css/base.scss"

如果是引入多个的话:

<style lang="scss" scoped>
  @import "../../assets/css/base.scss"; //注意这里必须加分号
  @import "https://unpkg.com/element-ui@2.3.7/lib/theme-chalk/index.css";
</style>

注意:引入语句后面最好加上分号,只引用一个还好,引用多个不加分号会报错

如果用 require 引入的话,是在 <script></script> 中引入:

<script>
  import {mapState, mapMutations} from "vuex"
  require('@/assets/css/common.css') //通过 别名路径 引入
  require('../assets/css/swiper-3.4.1.min.css') //require 不常用,一般都是用 import 引入css文件
  export default {
    components:{},
    data(){
      return {
        //
      }
    }
  }
</script>

 

 

二、字体图标

【后续添加:个人觉得  iconfont 和 Font Awesome 都不好用,在此强烈推荐另一篇文章: vue 中使用 Remix Icon  】

 

下面介绍两个 css 常用的字体图标库:阿里巴巴矢量图标(iconfont)Font Awesome 

1、iconfont(iconfont不能用npm安装的方式使用,只能下载文件,把文件拷贝到项目中使用)

step1:打开官网 http://www.iconfont.cn/  ,用自己的 github 账号登录,在输入框里面输入自己想要的图标,输入中文即可(如:“保存”、“购物车”等):

step2:选择自己想要的图标,点击第一个图标“添加入库”。

step3:添加过后,可以看到右上角库里面的数字就变了。

step4:点击右上角购物车的图标,点击“添加至项目”。没有项目的话就自己新建一个项目。

step5:点击“下载至本地” 

step6:下载完毕,解压。在你的项目下src/assets文件夹里建立一个 fonts 文件夹,放入解压之后的字体图标文件。如下图:

其中demo的文件可以不放入,但是我们可以在demo_index.html 中查看图标的类名。

step7:进入 inconfont.css 文件,修改以下路径:

 @font-face 中引用都是当前目录下(assets/fonts)的文件,里面是相对路径。

step8: main.js 文件中引入 iconfont.css

 step9:如何在项目中使用字体图标呢,其实很简单,创建一个 i 标签或者 span 标签,添加两个类名,一个固定的是 iconfont ,另一个是你想要的那个图标对应的类名:

如果项目中碰到后续需要添加字体新图标的,可以参考这篇文章iconfont 怎么添加新的图标

2、Font Awesome

2-1、npm 安装的方式使用

step1:命令行执行 npm install --save font-awesome 。在 package.json 中可以查看到:

step2: main.js 中引入:

import 'font-awesome/css/font-awesome.css'

step3:在组件中使用:参考官网的案例,直接定义 i 标签,添加相应的类名即可。

2-2、下载文件的方式使用

step1:百度搜索“Font Awesome”,打开网址,下载旧版 v4.7(v5版需要付费)。

step2:下载过后的文件解压,得到一个 font-awesome-4.7.0 的文件夹,里面的内容为:

step3: src/assets 下新建一个 font-awesome 的文件夹,把上面的解压后 font-awesome-4.7.0 文件里面的内容全部拷贝过来。

 注意:别动里面的目录结构,因为 css/font-awesome.min.css 引用的是 assets/font-awesome/fonts 下的文件。

step4: main.js 中引入:

import './assets/font-awesome/css/font-awesome.min.css';

step5:在组件中使用:参考官网的案例,直接定义 i 标签,添加响应的类名即可。

 

三、图片

一般会在 src/assets 文件夹下建立一个 imgs 的文件夹,里面专门用来存放图片。

通过 img 标签引入图片

<img :src="imgUrl" alt="">

方法一(通过 require() 引入):

data() {
  return {
    //imgUrl: require('../../assets/imgs/test.png')  //实际项目中注意路径
    imgUrl: require('@/assets/imgs/test.png')  // @ is an alias to /src
  }
}

vue中,如果没有在 vue.config.js 中定义,@ 默认指的路径就是 /src

 

方法二(通过 import 引入):

//import testpng from '../../assets/imgs/test.png' //相对路径
import testpng from '@/assets/imgs/test.png'      // 别名路径
data() {
  return {
    imgUrl: testpng 
  }
}

个人觉得项目中直接用 @ 别名路径 更方便,避免一层层的去查看文件位置。

 

四、背景图片

js template 中引入图片资源需要使用 require 

想在 template 上写,require一下地址,如:

<div :style="{background: 'url(' + require('@/assets/imgs/test.png') + ')'}">

 想在 css 里面写,写法如下:

<style lang="scss" scoped>
  @import "../assets/css/common.css";
  #div{
    background: url("~@/assets/imgs/test.png") no-repeat; /* 必须是 ~@ */
  }
</style>

注意:这里写相对路径  background: url("../../assets/imgs/1.jpg") no-repeat 和路径别名 background: url("@/assets/imgs/1.jpg") no-repeat 都不行。

必须用 ~@ 的别名

 

posted @ 2021-05-31 11:19  smil、梵音  阅读(6099)  评论(0编辑  收藏  举报