@[TOC](vue项目中设置background: url() 是行内样式不生效,样式表是可以的)
首先:如果不是项目中普通的一个index.html中是可以的
一、原因
在Vue项目中,行内样式和样式表的编译规则是有所不同的。当你在Vue组件的行内样式中使用相对路径引用图片时,编译后的结果将保持不变,即使用相对路径引用的图片路径。
例如,在你的示例中,行内样式的编译结果将仍然是 background: url(…/…/…/…/…/assets/images/emoji.png) no-repeat;。
而对于样式表中的样式,Vue会根据配置对静态资源进行处理,并将它们拷贝到输出目录(默认为 /static/ 目录)。这个过程会改变相对路径引用的图片路径。在你的示例中,…/…/…/…/…/assets/images/emoji.png 被替换为 /static/img/emoji.e68c0ea.png。
这种处理方式可以确保在构建过程中正确地引用静态资源。
处理办法----上代码
// 要解决行内样式中的编译问题,你可以使用 require 或 import 来引用图片,并将其转换为一个模块。这样,在编译后,Vue会处理这个模块并生成正确的路径。<template><spanclass="aa":style="{width: '200px',height: '200px',display: 'inline-block',background: 'url(' + emojiImage + ') no-repeat'}"></span>
</template><script>
export default {data() {return {emojiImage: require('../../../../../assets/images/emoji.png')}}
}
</script>
//或者
`<span class='emoji-face' style="width: 25px;height: 25px;display: inline-block;background: url(${this.emojiImage}) no-repeat;background-position: ${item.top} ${item.left};" ></span>`
没了~~~~~~~~~~