element UI + vue2 + html实现堆叠条形图 - 横向分段器

效果图:

复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- import CSS -->
  <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.9/theme-chalk/index.css">

</head>
<style>
  .clean-clr-bg {
    background-color:#6f85d4 ;
  }
  .clean-clr {
    color: #6f85d4;
  }

  .custom-segmented-progress {
    position: relative;
    display: flex;
    //align-items: flex-start;
    //flex-direction: column;
  }

  .custom-segmented-progress > div {
    text-align: center; /* 文本居中 */
    color: #fff; /* 文本颜色 */
  }
</style>
<body>
<div id="app">
 
  <div style="margin-bottom: 10px">
    <div class="custom-segmented-progress" style="background-color: #ada9a9">
      <div style="width: 30%;background-color: #00C777">30%</div>
      <div style="width: 30%;background-color: #b0cbc1">30%</div>
    </div>
  </div>
  <br>

  <div
    style="border:1px solid #e2c7c7;border-radius:6px;width: 28%;height:452px;margin-top: 30px;overflow: hidden;padding: 20px;font-size: 12px;max-width: 300px;min-width: 180px;">
    <div style="font-size: 20px;font-weight: bold">最近30天科室收发总数排名</div>

    <div v-for="(segment, index) in segments" :key="index" style="background-color: #fff; ">
      <div style="display: flex;justify-content: space-between;margin-left: 6px;margin-right: 6px;padding-top: 10px;">
        <div>
          <span
            style="display:inline-block;height:16px;width:16px;border: 1px solid #f0ad4e;border-radius: 50%;text-align: center;margin-left: 6px;">{{ index + 1 }}</span><span>儿科</span>
        </div>
        <span>2312</span>
      </div>


      <div class="custom-segmented-progress"
           style="background-color: #f2f2f2;border:0px solid #7b7676;margin-top: 10px">
        <div v-for="(part, pindex) in segment" :key="pindex"
             :style="segmentStyle(part)">{{ part.percentage }}%
        </div>
      </div>

      <br>
    </div>
    <div style="display: flex;justify-content: start">
      <div class="clean-clr"  ><span class="clean-clr-bg"
        style="display:inline-block;height: 10px;width: 10px; margin-right: 10px;border-radius: 50%"> </span>净物总数</div>
      <div style="color: #6f85d4"><span
        style="display:inline-block;height: 10px;width: 10px;background-color: #b2ca4d;margin-right: 10px;border-radius: 50%"> </span>污物总数
      </div>
    </div>
  </div>
</div>
</body>
<script src="https://unpkg.com/vue@2/dist/vue.js"></script>
<script src="https://cdn.staticfile.org/element-ui/2.15.9/index.min.js"></script>
<script>
  Vue.config.productionTip = false //阻止vue在启动时生成生产提示
  const vm = new Vue({
    el: '#app',
    data: {
      message: "好的",
      segments: [
        [{percentage: 30, color: '#6f85d4'}, {percentage: 70, color: '#b2ca4d'}],
        [{percentage: 100, color: '#6f85d4'}],
        [{percentage: 8, color: '#6f85d4'}, {percentage: 30, color: '#b2ca4d'},],
        [{percentage: 70, color: '#b2ca4d'},],
        [{percentage: 30, color: '#6f85d4'}, {percentage: 30, color: '#b2ca4d'},],
      ]
    },
    computed: {},
    components: {},
    props: {},
    methods: {
      segmentStyle(segment) {
        return {
          width: `${segment.percentage}%`,
          backgroundColor: segment.color,
          height: '20px' // 根据需要调整高度
        };
      }
    },
    watch: {},// 监控 data 中的数据变化
    //过滤器
    filters: {},
  })

</script>
</html>
相关推荐
子兮曰6 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰6 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万6 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝6 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋6 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
大蓝头6 天前
安装包UI美化之路-nsNiuniuSkin全新UI调试与预览方法
ui·electron·安装包·截图控件·截屏控件
卡布鲁6 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95276 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大6 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师6 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端