【问题标题】:How to change color depending on what is returned in a view?如何根据视图中返回的内容更改颜色?
【发布时间】:2018-05-19 11:39:30
【问题描述】:

我有一个返回不同状态的 div,如下所示:

  • 已售出
  • 按需
  • 未付款
  • 过期
  • 付费

我想使用 sass 或 css 为每个状态设置不同的颜色,

这是我使用 sass 尝试过的:

在 HTML 视图中:

<div class="badge">
    {{store.status | translate | uppercase}}
</div>

在样式表中:

$status : sold, paid, notpaid, on demand;

@else if($status == sold){
   .badge{
      color: red;
   }
}

@else if ($status == paid){
    .badge{
       color: green;
    }
]
@else if($status == returned{
   .badge{
       color: blue;
   }
]
@else if ($status == notpaid{
   .badge{
      color: yellow;
   }
}
else{
  .badge{
    color : black;
}

这不起作用。有人可以帮助我实现我想要的最佳方式吗?

注意:状态是动态返回的。

【问题讨论】:

    标签: css angularjs html sass


    【解决方案1】:

    我认为你可以做到这一点。

    <div class="badge {{store.status}}">
        {{store.status | translate | uppercase}}
    </div>
    

    并且在 SASS 中有:

    .badge{
       &.sold{
          background-color: red;
       }
       &.notpaid{
          background-color: green;
       }
       &.paid{
          background-color: blue,
       }
    }
    

    无法获取 Sass 文件中的值。

    示例: http://jsfiddle.net/0cm19uec/

    【讨论】:

    • 记住那些数据不是静态的,而是在视图中动态返回的,
    • 现在我举个例子......我忘记了 Sass 中的 $。
    【解决方案2】:

    SASS 并不是这样工作的。您需要为您的徽章添加一个类才能正常工作。像这样的:

    <div class="badge {{store.status}}">
        {{store.status | translate | uppercase}}
    </div>
    

    萨斯:

    .badge {
        .notpaid {
            color: yellow;
        }
    }
    

    【讨论】:

    • 请仔细阅读我的问题,我有一个班级在表格中返回不同的状态,例如在表格中你有一辆状态为已售出的汽车假设你有很多不同状态的汽车,已付款,未付款,已售出,已损坏等,所以我希望每个状态都包含不同的颜色希望你得到我,谢谢
    • 我的示例会将返回的状态重复为徽章 div 的类,然后您可以在 SASS 中引用它。您正在尝试在样式表中使用某种动态 if 语句,这不是 CSS 的工作方式。
    • 你的权利,但你的方法仍然不起作用:(
    【解决方案3】:

    我会做这样的事情。

    SCSS

    $statuses: (
      sold: red,
      paid: green,
      notpaid: yellow,
      demand: blue
    );
    
    .badge {
      color: black;
    
      @each $name, $value in $statuses {
        &--#{$name} {
          color: $value;
        }
      }
    }
    

    HTML

    <div class="badge"></div><!--black-->
    <div class="badge badge--sold"></div><!--red-->
    <div class="badge badge--paid"></div><!--green-->
    <div class="badge badge--notpaid"></div><!--yellow-->
    <div class="badge badge--demand"></div><!--blue-->
    
    <div class="badge badge--{{store.status | translate | lowercase}}"></div>
    

    如果您需要更改类、添加新类、更改颜色等,维护起来会容易得多。这一切都在 $statuses 地图中完成。

    【讨论】:

    • hii @gavin 记住它的循环只有一个类 nmed
      {store.status}}
      这个 div 在像表这样的列中重新调整不同的状态,例如你有 car1 car2 car3 和 echa 有不同的状态已售出、已付款、未付款等我需要的是每个返回状态都必须有自己的颜色。例如 car1 状态(已售出)颜色为绿色,car2 状态(未付款)颜色为红色等。
    • @HotZellah 太酷了。我的答案与接受的答案相似。
    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2021-06-27
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多