用法就是在style中使用关键方法 v-bind()
,vue回去实例里找到对象变量并加入style变量中。
新版是如下:
<script>
export default {
data() {
return {
color: red
};
}
};
</script>
<style>
.box {
background: v-bind("color");
}
</style>
这东西用途在哪里?
- 其一,做动态主题肯定是可行这块没有太多值得说的。
- 其二,我想说的是它可以减少
<template>
\<script>
中的计算属性使其各执其职
在vue2中里可能会有如下操作
案例一
使用 :style
动态改变其样式。
<template>
<div class="about" :style="{ width: size + 'px', height: size + 'px' }">
<span>This is an about page</span>
</div>
</template>
<script>
export default {
data() {
return {
size: 100
};
},
mounted() {
setInterval(() => {
this.size = Math.floor(Math.random() * 500) + 100;
}, 1 * 1000);
}
};
</script>
<style>
.about {
width: 100px;
height: 100px;
background: red;
}
</style>
案例二
使用 compute
计算属性触发其样式
<template>
<div class="about" :style="aboutStyle">
<span>This is an about page</span>
</div>
</template>
<script>
export default {
data() {
return {
size: 100
};
},
computed: {
aboutStyle() {
return {
width: this.size + "px",
height: this.size + "px"
};
}
},
mounted() {
setInterval(() => {
this.size = Math.floor(Math.random() * 500) + 100;
}, 1 * 1000);
}
};
</script>
<style>
.about {
width: 100px;
height: 100px;
background: red;
}
</style>
但这一切在Vue3你可以~
- 你可以不用写两份默认值
<template>
\<script>
中减少不必要的样式状态
<template>
<div class="about">
<span>This is an about page</span>
</div>
</template>
<script>
export default {
inject: ["theme"],
data() {
return {
size: 100
};
},
mounted() {
setInterval(() => {
this.size = Math.floor(Math.random() * 500) + 100;
}, 1 * 1000);
}
};
</script>
<style scoped>
.about {
width: v-bind(size + "px");
height: v-bind(size + "px");
background: v-bind("theme.color");
}
</style>
语法上值得的注意
可以使用如下几种方式?:
<template>
<div class="text">hello</div>
</template>
<script>
export default {
data() {
return {
color: "red",
font: {
size: "2em",
},
view: {
size: 100
}
}
},
compute: {
width() {
return this.view.size;
}
}
}
</script>
<style>
.text {
color: v-bind(color);
font-size: v-bind('font.size');
width: v-bind(width + "px");
height: v-bind(`${view.size}px`);
}
</style>
绝不可以☹️:
<style>
.text {
height: v-bind("view.size" + "px");
}
</style>
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论