【发布时间】:2023-01-30 02:47:11
【问题描述】:
客观的
我想通过小路图像作为组件的道具。我希望组件使用 prop 动态生成背景图像。
我所有的图像都在 Vue src 文件夹中的资产文件夹中。 路径看起来像'@/assets/images/subject/computers.jpeg'
问题
没有出现背景图像
这是页面上呈现的内容:
但是,没有任何显示
奇怪的行为
出于某种原因,添加完全相同的路径名'@/assets/images/subject/computers.jpeg'在 CSS 中工作(将其添加到 <style> 标签中)。如果它是 v-bind 内联样式,它就不起作用。
这是它在我的 CSS 中的样子
但是,问题在于它不是动态呈现的 CSS。
我进一步检查了该元素并注意到了一些奇怪的行为。如您所见,内联样式将图像路径读取为'@/assets/images/subject/computers.jpeg'(下图中的 element.style)。
而在 CSS 中添加路径,改变'@/assets/images/subject/computers.jpeg'到'http://localhost:8080/img/computers.7f3748eb.jpeg',然后正确呈现背景图像。
问题
我想我的问题是双重的:
- 您将如何使用道具在 Vue 中动态渲染背景图像?或者有更好的方法吗?
- 为什么绑定内联样式不解析路径(一直使用“@”),而直接将其添加到 <script> 标签中却解析路径?
【问题讨论】:
-
在引擎盖下,Vue 使用 VueLoader 来根据环境解析正确的资产路径(它在服务(开发)和构建(生产)时具有不同的路径)。阅读Asset URL Handling。具体来说,转换规则.
标签: css vue.js data-binding vue-composition-api vue-props