语法和应用
var(custom-property-name, value)
| 值 | 描述 |
|---|---|
| custom-property-name | 必需。自定义属性的名称,必需以 -- 开头 |
| value | 可选。备用值,在属性不存在的时候使用。 |
:root {
--main-bg-color: coral;
--main-txt-color: blue;
--main-padding: 15px;
}
#div1 {
background-color: var(--main-bg-color);
color: var(--main-txt-color);
padding: var(--main-padding);
}
#div2 {
background-color: var(--main-bg-color);
color: var(--main-txt-color);
padding: var(--main-padding);
}
案例:卡片组件
<!-- card.vue -->
<template>
<div :style="{'--card--theme-color':color}" :class="{theme:color}" class="chart-card">
<p class="chart-card-title">
<span>{{ title }}</span>
<el-tooltip class="item" effect="dark" :content="tips" placement="top">
<i class="el-icon-info"></i>
</el-tooltip>
</p>
<p class="chart-card-data">{{ countFormat }}</p>
<div class="chart-card-info">
<p class="info-item">
<span class="info-label">环比 </span>
<span class="info-value">{{data.periodGrowt}}%</span>
</p>
</div>
</div>
</template>
<script>
export default {
data () {
return {
name: ''
};
},
props: {
title: { // 卡片名称
type: String,
default: '',
},
data: {
type: Object,
default: {
count: null, // 值
periodGrowth: null // 环比
},
},
color: { // 主题颜色
type: String,
},
tips: { // 提示信息
type: String,
default: '',
}
},
computed: {
// 千位展示
countFormat () {
if(this.data.count != '-') {
if(this.data.count > 999){
const str = this.data.count.toString();
const reg = /(\d)(?=(?:\d{3})+$)/g;
return str.replace(reg, '$1,');
} else {
return this.data.count
}
} else {
return '--'
}
},
},
};
</script>
<style lang="scss" scoped>
.chart-card{
background: #ffff;
border-radius: 4px;
height: 136px;
padding: 16px;
display: flex;
flex-direction: column;
justify-content: space-between;
p{
padding: 0;
margin: 0;
}
&-title{
font-size: 16px;
color: #797979;
line-height: 16px;
display: flex;
justify-content: space-between;
}
&-data{
color: #333;
font-size: 32px;
line-height: 32spx;
font-weight: bold;
display: flex;
justify-content: space-between;
letter-spacing: 2px;
i{
font-size: 16px;
opacity: 0.8;
}
}
&-info{
font-size: 14px;
color: #797979;
line-height: 14px;
display: flex;
justify-content: space-between;
.el-icon-caret-bottom{
color: #ef5350;
}
.el-icon-caret-top{
color: #33b86c;
}
}
}
.chart-card.theme{
background: var(--card--theme-color); // 主题颜色应用
.chart-card-title{
color: #fff;
opacity: 0.8;
}
.chart-card-data{
color: #fff;
}
.chart-card-info{
.info-item{
background:rgba(255, 255, 255, 0.85);
color: var(--card--theme-color); // 主题颜色应用
height: 24px;
line-height: 24px;
padding: 0 12px;
border-radius: 12px;
font-size: 14px;
}
.info-value{
font-weight: bold;
color: #797979;
}
}
}
</style>
应用卡片组件
<chart-card title="告警次数" :data="alarmCardData" color="#29b6f6"/>
<chart-card title="紧急告警次数" :data="urgentCardData" color="#7e57c2"/>
<chart-card title="已处理告警数量" :data="doneCardData" color="#33b86c"/>
<chart-card title="平均处理时长(分钟)" :data="avgCardData" color="#6e8cd7"/>