iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现百分比占比条效果
  • 852
分享到

vue实现百分比占比条效果

2024-04-02 19:04:59 852人浏览 独家记忆
摘要

本文实例为大家分享了Vue实现百分比占比条的具体代码,供大家参考,具体内容如下 效果图 1.各自占比 /p> 2.左百分百 3.右百分百 代码实现 <templa

本文实例为大家分享了Vue实现百分比占比条的具体代码,供大家参考,具体内容如下

效果图

1.各自占比

/p>

2.左百分百

3.右百分百

在这里插入图片描述

代码实现


<template>
  <div class="about">
    <!-- <h1>This is an about page</h1> -->
    <div class="step">
      <!-- 左边100%的时候不显示斜边三角形,并且增加右边角 -->
      <div
        class="left"
        v-show="leftPercent"
        :class="[{ 'full-left': !rightPercent }, { 'tringle': rightPercent }]"
        :style="{ width: leftPercent+'%' }"
        @mouseover="onMouseTooltip(LEFT_BAR, SHOW_TIP)"
        @mouseleave="onMouseTooltip(LEFT_BAR, HIDE_TIP)"
      >
        <div class="bar-tip-box" v-show="leftBar.isshowTip">
          <p>总数:{{ totalNum }}</p>
          <p>绿色所占比例:{{ leftPercent }}%</p>
        </div>
        <div class="tip-arrow" v-show="leftBar.isShowTip"></div>
        {{ leftPercent }}%
      </div>
      <div
        class="right"
        v-show="rightPercent"
        :class="[{ 'full-right': !leftPercent }]"
        @mouseover="onMouseTooltip(RIGHT_BAR, SHOW_TIP)"
        @mouseleave="onMouseTooltip(RIGHT_BAR, HIDE_TIP)"
      >
        <div class="bar-tip-box" v-show="rightBar.isShowTip">
          <p>总数:{{ totalNum }}</p>
          <p>灰色所占比例:{{ rightPercent }}%</p>
        </div>
        <div class="tip-arrow" v-show="rightBar.isShowTip"></div>
        {{ rightPercent }}%
      </div>
    </div>
  </div>
</template>

<script>
const LEFT_BAR = "left";
const RIGHT_BAR = "right";
const SHOW_TIP = "show";
const HIDE_TIP = "hide";

export default {
  data() {
    return {
      LEFT_BAR: LEFT_BAR,
      RIGHT_BAR: RIGHT_BAR,
      SHOW_TIP: SHOW_TIP,
      HIDE_TIP: HIDE_TIP,
      totalNum: 1000,
      leftPercent: 100,
      leftBar: {
        isShowTip: false,
        delayOut: null
      },
      rightBar: {
        isShowTip: false,
        delayOut: null
      }
    };
  },
  methods: {
    onMouseTooltip(tipType, actionType) {
      let bar = null;
      if (tipType == LEFT_BAR) {
        bar = this.leftBar;
      } else if (tipType == RIGHT_BAR) {
        bar = this.rightBar;
      } else {
        return;
      }
      if (actionType === SHOW_TIP) {
        this.showBarTooltip(bar);
      } else if (actionType === HIDE_TIP) {
        this.hideBarTooltip(bar);
      } else {
        return;
      }
    },
    showBarTooltip(bar) {
      if (bar.delayOut != null) {
        clearTimeout(bar.delayOut);
      }
      bar.delayOut = null;
      bar.isShowTip = true;
    },
    hideBarTooltip(bar) {
      clearTimeout(bar.delayOut);
      bar.delayOut = setTimeout(function() {
        bar.isShowTip = false;
      }, 100);
    },
  },
  computed: {
    rightPercent: function(){
      return 100 - this.leftPercent;
    }
  }
};
</script>

<style lang="less" scoped>
.step {
  position: relative;
  display: flex;
  margin: 100px;
  width: 200px;
  font-size: 0;
  .left {
    flex-grow: 0;
    position: relative;
    display: inline-block;
    background: #62c87f;
    color: #fff;
    text-align: center;
    font-weight: bold;
    width: 70%;
    font-size: 12px;
    line-height: 20px;
    height: 20px;
    min-width: 30px;
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
  }
  // 百分百的时候不显示该伪类
  .tringle::after {
    content: " ";
    position: absolute;
    top: 0;
    right: -8px;
    border-width: 20px 8px;
    border-style: solid;
    border-color: #62c87f transparent transparent transparent;
    z-index: 10;
  }

  .right {
    flex-grow: 1;
    position: relative;
    display: inline-block;
    
    background: #d0d4dc;
    color: #333;
    font-weight: bold;
    text-align: center;
    font-size: 12px;
    line-height: 20px;
    height: 20px;
    text-align: center;
    min-width: 35px;
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
  }

  .full-left{
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
  }

  .full-right{
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
  }

  .tip-arrow {
    position: absolute;
    left: 50%;
    top: -10px;
    display: inline-block;
    width: 7px;
    height: 7px;
    transfORM: rotateZ(45deg);
    -WEBkit-transform: rotateZ(45deg);
    background-color: #7f7f7f;
    z-index: 10;
  }

  .bar-tip-box {
    position: absolute;
    top: -5px;
    right: 50%;
    transform: translate(50%, -100%);
    text-align: left;
    padding: 5px 10px;
    width: max-content;
    color: #fff;
    font-size: 12px;
    font-weight: 400;
    border-radius: 3px;
    background-color: #7f7f7f;
    z-index: 10;

    p {
      margin: 0;
      padding-bottom: 5px;
    }
  }
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现百分比占比条效果

本文链接: https://www.lsjlt.com/news/135918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现百分比占比条效果
    本文实例为大家分享了vue实现百分比占比条的具体代码,供大家参考,具体内容如下 效果图 1.各自占比 /p> 2.左百分百 3.右百分百 代码实现 <templa...
    99+
    2024-04-02
  • css3如何实现条状百分比效果
    这篇文章主要介绍了css3如何实现条状百分比效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   首先这个百分比,你要计算出来。   ...
    99+
    2024-04-02
  • Vue实现动态圆环百分比进度条
    最近在开发小程序的时候,碰到一个实现圆环百分比进度条的需求,类似如下设计图: 小白的我感觉实现起来有难度,于是上百度看看别人是怎么做的,结果没找到一个满意的,要不是静态的实现,就是...
    99+
    2024-04-02
  • jquery实现百分比记分进度条
    本文实例为大家分享了jquery实现百分比记分进度条的具体代码,供大家参考,具体内容如下 1.先看效果 2.代码如下 jquery.lineProgressbar.js代码如下 ...
    99+
    2024-04-02
  • 利用Echarts实现图例显示百分比效果
    目录效果图主要代码全部代码echarts图例显示百分比 效果图 主要代码 全部代码 secondChart = () => { //datas的数据是接口拿到的数据...
    99+
    2024-04-02
  • 如何利用css3实现进度条效果及动态添加百分比
    这篇文章主要介绍了如何利用css3实现进度条效果及动态添加百分比,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码:<!DOCTYPE html><...
    99+
    2023-06-08
  • vue圆环百分比进度条组件功能的实现
      有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激。 功能介绍: 1、若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时执行的是递增动画 2、若页面无刷新...
    99+
    2024-04-02
  • jquery怎么实现百分比记分进度条
    这篇文章主要介绍了jquery怎么实现百分比记分进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。jquery是什么jquery是一个简洁而快速的JavaScript库,它...
    99+
    2023-06-14
  • HTML5 Canvas怎么实现圆形进度条并显示数字百分比效果
    这篇文章主要介绍HTML5 Canvas怎么实现圆形进度条并显示数字百分比效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现效果首先创建html代码<canvas id="canvas&...
    99+
    2023-06-09
  • vue项目之数量占比进度条实现方式
    目录vue数量占比进度条实现封装如下组件使用vue实现进度条效果总结vue数量占比进度条实现 功能说明: 1、点击开始,滚动条自动加; 2、点击停止,滚动条停止加; 封装如下 <...
    99+
    2022-12-08
    vue数量占比 vue进度条 vue实现进度条
  • Android绘制圆形百分比加载圈效果
    先看一组加载效果图,有点粉粉的加载圈: 自定义这样的圆形加载圈还是比较简单的,主要是用到Canvans的绘制文本,绘制圆和绘制圆弧的api: public void drawCircle(float cx, float cy, float ...
    99+
    2023-05-30
    android 百分比 加载
  • c#进度条怎么显示百分比
    在c#中,可以使用ProgressBar控件来显示进度条和百分比。首先,在窗体中添加一个ProgressBar控件,然后在代码中设置...
    99+
    2023-05-25
    c#进度条 c#
  • mfc进度条怎么显示百分比
    MFC(Microsoft Foundation Class)进度条可以通过设置进度条的最小值和最大值,来计算进度的百分比,并根据当...
    99+
    2023-08-29
    mfc
  • vue实现echart饼图legend显示百分比的方法
    本文主要介绍了vue使用echart的饼图数据部分展示百分比,分享给大家,具体如下: 效果图 实现源码 option = { title : { tex...
    99+
    2024-04-02
  • 如何使用Ajax实现简单的带百分比进度条
    这篇文章主要介绍如何使用Ajax实现简单的带百分比进度条,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!需求:当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验实现步骤JSP页面添加t...
    99+
    2023-06-08
  • Vue实现步骤条效果
    本文实例为大家分享了Vue实现步骤条效果的具体代码,供大家参考,具体内容如下 步骤总数和初始选择步骤 均可自定义设置,每个步骤title和description也均可自定义设置传入 ...
    99+
    2024-04-02
  • MySQL实现显示百分比显示和前百分之几的方法
    目录要求实现代码数据库前几天一个朋友让我帮忙写的,随手记录一下,感觉难度也不大,就是写的时候遇到一些问题。优化方便做得不太好。有好的优化方法欢迎分享!(数据库在文章结尾) 要求 1)...
    99+
    2024-04-02
  • CSS百分比定义高度没有效果的原因是什么
    本篇内容主要讲解“CSS百分比定义高度没有效果的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS百分比定义高度没有效果的原因是什么”吧! ...
    99+
    2024-04-02
  • vue实现动态进度条效果
    本文实例为大家分享了vue实现动态进度条效果的具体代码,供大家参考,具体内容如下 演示效果: 结构 progress/index.js const controller = ...
    99+
    2024-04-02
  • Vue实现进度条变化效果
    本篇文章用Vue简单实现进度条的变化,供大家参考,具体内容如下 先上一波效果图: 点击减后,每次减百分之十 减到百分之0后,减操作按钮隐藏 然后点击重头开始,恢复到初始状态 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作