在.vue
文件中的style中的css中想引入assets文件夹中的图片资源,总是报错
这是某个vue组件中style中的css,我这样根据相对路径就是获取不到图片资源
.active {
background: #111c24 url('../../assets/icon/login_active.png') no-repeat center;
}
在.vue
文件中的style中的css中想引入assets文件夹中的图片资源,总是报错
这是某个vue组件中style中的css,我这样根据相对路径就是获取不到图片资源
.active {
background: #111c24 url('../../assets/icon/login_active.png') no-repeat center;
}
根据你的描述,图片资源最好放到static文件夹,assets文件夹放的一般是最后会压缩合并的资源,比如css文件,
在main.js
文件中引用
import './assets/css/common.css'
其实完全没必要将图片放在src/assets里面,这是一个坑,你那里报错应该是webpack里面配置的问题。
推荐的图片存放方式
1 如果图片小于8k(webpack配置里设置压缩大小),会被压缩成base64格式,建议直接放在这个组件同级目录
background-image: url(./img/icon-1.png);
2 如果图片比较大,可放在项目根目录的public/images里面,统一管理
background-image: url(/images/banner.png);
找到一种方法,不过需要把背景色变成img标签引用assets里的文件
alias: {'@src': resolve('src/assets')}
import imgs from '@src/imgs/xxxx.png'
data(){return {imglist:imgs}},
<img :src="imglist">
使用style的css module模式,就可以直接在样式中引用图片了,很简单:
<style module>
.active{
background: #111c24 url(@/assets/icon/login_active.png) no-repeat center;
}
</style>
<template>
<div :class="$style.active"></div>
</template>
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
建议题主设置一个webpack的路径别名
webpack.base.conf.js
中然后使用的时候
@src就可以准确的定位到assets目录了,同时也省去了各种..的写法,简单明了。