<p>我想根据窗口的当前断点定义v-img的top属性。</p>
<p>我想这样定义:</p>
<pre class="brush:php;toolbar:false;"><v-img contain id="logo-transparent" :top="logoTop" :width="logoWidth" :src="logoTransparent" class="hidden-xs-only"></v-img></pre>
<p>计算属性如下:</p>
<pre class="brush:php;toolbar:false;">logoTop(){
switch (this.$vuetify.breakpoint.name) {
case 'xl': return "-4%"
case 'lg': return "-6%"
case 'md': return "-8%"
case 'sm': return "-8%"
case 'xs': return 0
default:
return "-4%"
}
},</pre>
<p>CSS如下:</p>
<pre class="brush:php;toolbar:false;">#logo-transparent{
z-index: 1;
width: 400px;
height: 300px;
position: absolute;
right: -1%;
}</pre>
<p>但问题是v-img没有top属性。</p>
<p>我想使用计算属性来定义图像的CSS,如下所示:</p>
<pre class="brush:php;toolbar:false;">logoTop(){
return {
"--top-property" : switch (this.$vuetify.breakpoint.name) {
case 'xl': return 400
case 'lg': return 300
case 'md': return 300
case 'sm': return 200
case 'xs': return 0
default:
return 400
}
}
},</pre>
<p>在CSS中使用它的方法如下:</p>
<pre class="lang-css prettyprint-override"><code>top : var(--top-property)
</code></pre>
<p>但似乎我不能在这种情况下使用switch。</p>
<p>我该如何做呢?</p>
您原来的
logoTop计算属性可以在样式绑定中用于设置v-img的top位置:<template> <v-img :style="{ top: logoTop }" ... /> </template> <script> export default { computed: { logoTop() { switch (this.$vuetify.breakpoint.name) { case 'xl': return "-4%" case 'lg': return "-6%" case 'md': return "-8%" case 'sm': return "-8%" case 'xs': return 0 default: return "-4%" } }, } } </script>演示
switch不返回任何内容。你应该像这样使用一个变量logoTop() { let topProperty; switch (this.$vuetify.breakpoint.name) { case 'xl': topProperty = 400; break; case 'lg': case 'md': topProperty = 300; break; case 'sm': topProperty = 200; break; case 'xs': topProperty = 0; break; default: topProperty = 400; } return { "--top-property" : topProperty } },