css实现渐变电量效果柱状图

我们通常的做法就是用echarts来实现

比如

echarts象形柱图实现电量效果柱状图

接着我们实现进阶版,增加渐变效果

echarts分割柱形图实现渐变电量效果柱状图

接着是又在渐变的基础上,增加了背景色块的填充

echarts实现渐变电量效果柱状图

其实思路是一致的,就是效果层的叠加

以上,就是在项目中实际会用到的效果

如果你只是想做一个静态demo,不需要数据,不需要后台,这里教你一个简单快捷的方法,用css实现!

实现效果如下↓

相关代码:

<template>
    <!--css实现电量效果-->
    <div class="panel">
        <div class="content">
            <div class="legend">
                <div class="legend-item">
                    <span class="legend-icon" style="background:linear-gradient(0deg,rgba(247,240,42,1),rgba(255,84,84,1));"></span>
                    <span class="legend-label">报修</span>
                </div>
                <div class="legend-item">
                    <span class="legend-icon" style="background:linear-gradient(0deg,rgba(22,233,16,1),rgba(22,230,247,1));"></span>
                    <span class="legend-label">维护</span>
                </div>
            </div>
            <div class="chart">
                <div class="chart-item" v-for="(item,index) in datas">
                    <div class="chart-bg">
                        <span class="char-bg-item" v-for="n in 12" v-bind:style="char_bg_item_style1(item,n)"></span>
                    </div>
                    <div class="chart-bg">
                        <span class="char-bg-item" v-for="n in 12" v-bind:style="char_bg_item_style2(item,n)"></span>
                    </div>
                    <div class="chart-label">{{item.label}}</div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
import gradient from "@/lib/GradientColor.js";

export default {
    name: "BatteryCss",
    data() {
        return {
            maxValue: 30,
            datas: [
                { label: "2023/01", fix: 10, mainten: 12 },
                { label: "2023/02", fix: 8, mainten: 6 },
                { label: "2023/03", fix: 4, mainten: 8 },
                { label: "2023/04", fix: 7, mainten: 5 },
                { label: "2023/05", fix: 4, mainten: 6 },
                { label: "2023/06", fix: 2, mainten: 3 },
            ],
        };
    },
    methods: {
        char_bg_item_style1(item, n) {
            if (n <= 12 - item.fix) {
                return {
                    backgroundColor: "#D9D9D9",
                };
            } else {
                return {
                    //渐变色
                    backgroundColor: gradient("#F0E82C", "#EF7E5D", 12, n),
                };
            }
        },
        char_bg_item_style2(item, n) {
            if (n <= 12 - item.mainten) {
                return {
                    backgroundColor: "#D9D9D9",
                };
            } else {
                return {
                    //渐变色
                    backgroundColor: gradient("#25E2F2", "#19E419", 12, n),
                };
            }
        },
    },
};
</script>
<style scoped>
.panel {
    width: 500px;
    background: #1c242b;
}
.legend {
    height: 32px;
    width: 100%;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    line-height: 32px;
}

.legend-item {
    width: 80px;
}

.legend-icon {
    width: 18px;
    height: 12px;
    border-radius: 2px;
    display: inline-block;
}

.legend-label {
    font-size: 12px;
    color: #aaa;
    margin-left: 10px;
}

.chart {
    width: 100%;
    height: calc(100% - 32px);
    display: flex;
    flex-direction: row;
    justify-content: space-around;
    align-items: center;
}

.chart-item {
    width: 72px;
    height: 124px;
}

.chart-bg {
    position: relative;
    top: 14px;
    left: 14px;
    width: 18px;
    height: 81px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    float: left;
    margin-left: 2px;
}

.char-bg-item {
    height: 4px;
    width: 18px;
    display: inline-block;
    background: #d9d9d9;
}

.chart-label {
    height: calc(124px - 81px);
    font-size: 14px;
    color: #a5a6a6;
    position: relative;
    top: 20px;
    text-align: center;
}
</style>

版本信息↓

思路很简单,就是循环画一个一个小块块

相关推荐
古木20192 分钟前
前端面试宝典
前端·面试·职场和发展
轻口味2 小时前
命名空间与模块化概述
开发语言·前端·javascript
前端小小王2 小时前
React Hooks
前端·javascript·react.js
迷途小码农零零发2 小时前
react中使用ResizeObserver来观察元素的size变化
前端·javascript·react.js
娃哈哈哈哈呀3 小时前
vue中的css深度选择器v-deep 配合!important
前端·css·vue.js
旭东怪3 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
ekskef_sef5 小时前
32岁前端干了8年,是继续做前端开发,还是转其它工作
前端
sunshine6415 小时前
【CSS】实现tag选中对钩样式
前端·css·css3
qq_589568105 小时前
数据可视化echarts学习笔记
学习·信息可视化·echarts