要素の画像のソースをバインドしようとしていますが、うまくいかないようです。 「無効な式。生成された関数本体:{backgroundImage:{url(image)}」を取得しています。
documentation は、「Kebab-case」または「camel-case」のいずれかを使用することを示しています。
<div class="circular" v-bind:style="{ backgroundImage: { url(image) }"></div>
ここにフィドルがあります: https://jsfiddle.net/0dw9923f/2/
問題は、backgroundImage
の値が次のような文字列である必要があることです。
<div class="circular" v-bind:style="{ backgroundImage: 'url(' + image + ')' }"></div>
動作している簡単なフィドルは次のとおりです。 https://jsfiddle.net/89af0se9/1/
再:ケバブケースに関する以下のコメント、これはあなたがそれを行うことができる方法です:
<div class="circular" v-bind:style="{ 'background-image': 'url(' + image + ')' }"></div>
つまり、v-bind:style
の値は単なるJavaScriptオブジェクトであり、同じルールに従います。
更新:これを機能させるのに苦労する理由についてのもう一つの注意。
最終的な結果の文字列が次のようになるように、image
値を引用符で囲む必要があります。
url('some/url/path/to/image.jpeg')
そうでない場合、画像のURLに特殊文字(空白や括弧など)が含まれていると、ブラウザはそれを適切に適用しない可能性があります。 Javascriptでは、割り当ては次のようになります。
this.image = "'some/url/path/to/image.jpeg'"
または
this.image = "'" + myUrl + "'"
技術的には、テンプレートでこれを行うことができますが、有効なHTMLを維持するために必要なエスケープは価値がありません。
詳細はこちら: rl()の値を引用することは本当に必要ですか?
<div class="img-banner" :style="{'background-image': 'url(' + require('./assets/media/baner1.jpg') + ')'}"></div>
v-forループのdynamic値を使用して背景画像スタイルをバインドすると、次のようになります。
<div v-for="i in items" :key="n"
:style="{backgroundImage: 'url('+require('./assets/cars/'+i.src+'.jpg')+')'}">
</div>
別の解決策:
<template>
<div :style="cssProps"></div>
</template>
<script>
export default {
data() {
return {
cssProps: {
backgroundImage: `url(${require('@/assets/path/to/your/img.jpg')})`
}
}
}
}
</script>
このソリューションをより便利にするものは何ですか?まず、きれいです。そして、Vue CLIを使用している場合(そうすることを前提としています)、webpackでロードできます。
注:require()
は常に現在のファイルのパスに対して相対的であることを忘れないでください。
スタイルが適用されない原因となるファイル名にスペースがある背景画像の問題が発生しました。これを修正するには、文字列パスが単一引用符でカプセル化されていることを確認する必要がありました。
以下の例では、エスケープされた\ 'に注意してください。
<div :style="{
height: '100px',
backgroundColor: '#323232',
backgroundImage: 'url(\'' + event.image + '\')',
backgroundPosition: 'center center',
backgroundSize: 'cover'
}">
</div>
単一の繰り返しコンポーネントの場合、このテクニックは私にとってはうまくいきます
<div class="img-section" :style=img_section_style >
computed: {
img_section_style: function(){
var bgImg= this.post_data.fet_img
return {
"color": "red",
"border" : "5px solid ",
"background": 'url('+bgImg+')'
}
},
}