This article shares the specific code of Vue to realize the percentage bar for your reference. The specific content is as follows Rendering1. Respective proportion
2. Left 100% 3. 100% right Code Implementation<template> <div class="about"> <!-- <h1>This is an about page</h1> --> <div class="step"> <!-- When the left side is 100%, the hypotenuse triangle is not displayed, and the right angle is increased--> <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>Total: {{ totalNum }}</p> <p>Green percentage: {{ 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>Total: {{ totalNum }}</p> <p>Gray percentage: {{ 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; } // This pseudo class is not displayed 100% of the time.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; /* width:30%; */ 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> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
>>: Analysis of the implementation process of three modes of VMWare network adapter
We use the translate parameter to achieve movemen...
need: Use docker to start nginx + tomcat dual pro...
Communication between containers 1. Network shari...
The utf8mb4 encoding is a superset of the utf8 en...
1. What is master-slave replication? Master-slave...
Table of contents 1. HTTP Range Request 1.1 Range...
Table of contents Overview Implementation Protect...
Div basic layout <div class="main"&g...
Table of contents Multiple uses of MySQL Load Dat...
Table of contents introduce Support Intel CPU Sup...
Preface Recently, due to work needs, I need to in...
Networks usage tutorial Official website docker-c...
The domestic market still has a certain demand fo...
General CSS code will only cause minor issues wit...
Business scenario: Use vue + element ui's el-...