【问题标题】:Progress bar with breaks in angular带有角度中断的进度条
【发布时间】:2022-10-15 21:18:54
【问题描述】:

我正在开发 Angular 应用程序,并希望有一个进度条,如附图所示。

我在网上看到了很多进度条,但我找不到这种类型的进度条。我怎样才能得到这种类型的进度条?

【问题讨论】:

    标签: angular angular11


    【解决方案1】:

    我想有没有更好的方法来做到这一点,但你可以让它绘制“分隔符”,然后你可以制作类似的东西

    <div class="wrapper">
      <div class="progress" [style.width.%]="porc"></div>
      <div class="flex">
        <div *ngFor="let i of [0, 1, 2, 3, 4]" ></div>
      </div>
    </div>
    
    .wrapper
    {
     display:flex;
     flex-direction:column;
    }
    .wrapper div
    {
      height: 1rem;
    }
    .flex{
      display:flex;
      justify-content:space-evenly;
      margin-top:-1rem;
    }
    .flex div{
      width:.15rem;
      background: white;
    }
    .progress{
      background:steelblue;
    }
    

    stackblitz

    更新

    这个想法是创建一个宽度等于变量“porc”的 div,[style.width.%]="porc"

    “标记”实际上是一个宽度为 .15rem 的 div(在 .css 中是 .flex div)。您可以将background: white; 替换为background: silver; 以查看是否真的绘制了div。

    当我们使用 css-flex 时,我们可以使用 justify-content:space-evenly 指示项目是分布的,以便任何两个项目之间的间距(以及到边缘的空间)相等

    在代码中,我将具有类“.flex”的 div 的边距顶部设为 -1rem,与 divs- 的高度相同。我们也可以使用 margin-bottom:-1rem 应用于进度条

    如果我们想创建一个组件,唯一的就是变量“porc”是@Input

    我用一个组件和另一个相同的 .css 更新了 stackblitz

    更新 2*

    如果我们可以根据“porc”改变进度条的颜色,我们可以使用颜色的“getter”

    get color(){
      if (this.porc>80)
         return 'red';
      if (this.porc>60)
         return 'orange';
      if (this.porc>40)
         return 'green';
      return yellow;
    }
    

    并使用

    <div [style.background]="color" ...>
    

    【讨论】:

    • 它反应灵敏吗?
    • 如果你能解释你的代码,有可能吗?
    • 以及如何将其映射到百分比值?
    • @Roma,我更新了答案和stackblitz(我希望我已经解释了一些代码,否则再问一次)
    • 我怀疑这个假设proc的值是40,所以进度条是40%,并且会带颜色,我们怎么能显示剩下的60%空白?
    猜你喜欢
    • 2017-10-16
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2016-08-06
    • 2023-03-03
    • 2017-11-16
    相关资源
    最近更新 更多