ProgressBar.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="progress">
  3. <div class="progress-name">
  4. <span>{{ name }}</span>
  5. </div>
  6. <!-- <div class="progress-cont"> -->
  7. <div class="progress-bar">
  8. <div
  9. class="progress-bar-fill"
  10. :style="{ width: number + '%' }"
  11. :class="{ max: number === 100 }"
  12. ></div>
  13. </div>
  14. <div class="num">{{ number + "%" }}</div>
  15. <!-- </div> -->
  16. </div>
  17. </template>
  18. <script setup>
  19. const props = defineProps({
  20. number: {
  21. type: Number,
  22. required: true,
  23. },
  24. name: {
  25. type: String,
  26. required: true,
  27. },
  28. });
  29. </script>
  30. <style scoped lang="scss">
  31. .progress {
  32. display: flex;
  33. align-items: center;
  34. width: 100%;
  35. background: #053441;
  36. // border: 1px solid #146A7D;
  37. padding: 5px 0 5px 5px;
  38. box-sizing: border-box;
  39. color: #00fff0;
  40. font-size: 12px;
  41. }
  42. .progress-name {
  43. width: 40%;
  44. }
  45. .num{
  46. margin-left: 4px;
  47. font-size: 11px;
  48. }
  49. .progress-cont{
  50. width: 100%;
  51. display: flex;
  52. align-items: center;
  53. justify-content: space-between;
  54. }
  55. .progress-bar {
  56. width: 100%;
  57. background: url("@/assets/img/progress_bg.png") no-repeat center center / 100% 100%;
  58. box-sizing: border-box;
  59. padding: 3px 4px 3px 4px;
  60. overflow: hidden;
  61. }
  62. .progress-bar-fill {
  63. height: 10px;
  64. background: linear-gradient(
  65. 95deg,
  66. rgba(7, 161, 163, 0.98),
  67. rgba(255, 255, 255, 0.98)
  68. );
  69. border-radius: 10px 0 0 10px; /* 左侧圆角 */
  70. }
  71. .max {
  72. border-radius: 10px;
  73. }
  74. </style>