因突发奇想设计一款组件,需要根据属性动态绑定样式,故而整理一些Vue的动态绑定样式方法(传参绑定类似,不做过多叙述),仅供参考.
style
数据,直接绑定样式:root
全局变量element
不行哟以下内容是简单demo,需要做样式动态绑定:
<template>
<div class="header">
Header
div>
template>
<script>
export default {
name: "Header",
data() {
return {
className:"header"
color: "red",
changeColor:"#ff0000",
testStyle:{
"--color":'yellow'
}
};
},
};
script>
<div class="header" :style="'color:'+ color">div>
<div class="header" :style="testStyle">div>
<style>
.header{
color:var(--color)
}
style>
<template>
<div class="header">
Header
<component is="style">
.{{className}}{
color: {{ color }};
}
component>
div>
template>
<script>
export default {
name: "Header",
data() {
return {
className:"header",
color: "red",
};
},
};
script>
或者可以通过Vue.component方式自定义组件,如:
<template>
<div class="header">
Header
<v-style>
.{{className}}{
color: {{ color }};
}
v-style>
div>
template>
<script>
// 等同上面的
import Vue from 'vue';
// 增加自定义组件,指定元素内容为style
Vue.component('v-style', {
render: function (createElement) {
return createElement('style', this.$slots.default)
}
});
script>
<style>
:root{
--header-color:red;
}
.header{
color:var(--header-color)
}
style>
<style>
/* 注意:当前页面的element局部变量无效 */
/* element{
--header-color:red;
} */
.header{
--size:5px; /* 个人感觉意义不大 */
width:var(--size * 5);
font-size:var(--size);
}
style>