我正在使用Nuxt.js,并拥有自定义组件。
此组件在使用css设置背景图像的组件中具有css。
我尝试过以下操作但运行时遇到错误。 错误是:
invalid expression: Invalid regular expression flags in
组件
<template>
<section class="bg-img hero is-mobile header-image" v-bind:style="{ backgroundImage: 'url(' + image + ')' }">
<div class="">
<div class="hero-body">
<div class="container">
<h1 class="title">
{{ result }}
</h1>
<h2 class="subtitle ">
Hero subtitle
</h2>
</div>
</div>
</div>
</section>
</template>
<script>
export default {
props: ['result', 'image']
}
</script>
<style>
.bg-img {
background-image: url(~/assets/autumn-tree.jpg);
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-color: #999;
}
</style>
答案 0 :(得分:7)
url('~@/assets/autumn-tree.jpg')
我以为这是nuxtjs问题而犯了同样的错误。 Webpack使用语法来解析资产。
〜强制webpack将请求视为模块请求。 然后@从根开始。
答案 1 :(得分:1)
<template>
<div>
<div class="backgroundImage" :style="{ backgroundImage: `url(${backgroundImagePath})` }">
</div>
</template>
<script>
import backgroundImagePath from '~/assets/image.jpeg'
export default {
data() {
return { backgroundImagePath }
}
}
</script>
答案 2 :(得分:0)
我在https://github.com/nuxt/nuxt.js/issues/2123找到了答案。
基本上,在组件中执行:
<div :style="{ backgroundImage: `url(${backgroundUrl})` }">Content with background here</div>
答案 3 :(得分:0)
你可以正常写,但在'':'background-image'
v-bind:style="{ 'background-image': 'url(' + api.url + ')' }"
答案 4 :(得分:0)
这也是另一个结合使用require和url来解决资产的示例。
<b-col cols="8" class="hj_projectImage justify-content-center text-center" :style="{backgroundImage: `url(` + require(`~/assets/ProjectPictures/${this.ProjectPicture}`) + `)`}">
</b-col>
答案 5 :(得分:-1)
官方文档已经提供了解决方案,参见:https://nuxtjs.org/docs/2.x/directory-structure/assets#images
您需要做的就是删除斜线:
background-image: url("~assets/autumn-tree.jpg");
对于真正动态的图像,例如${image}.jpg
:
<img :src="require(`~/assets/img/${image}.jpg`)" />