Flash CSS颜色介于先前颜色和新颜色之间

时间:2019-03-27 15:31:48

标签: html css less

假设我有一个div,其颜色带有background-color:red or green。我想使这种闪光成为另一种颜色,其中“非闪光”是先前的颜色值。

HTML
<div class='red make-green flash'></div>

LESS
.red{
  background-color:red;
  .make-green{
    background-color:green;
  }
}
.flash{
   animation: flash 2s infinite;
}
@keyframes flash {
 0%{
    background-color:blue;
 }
 50%{
    background-color:            ;<-- what goes here?
 }
 100%{
    background-color:blue;
 }
}

如果我们移除.make-green,则div应该闪烁red | blue,而make-green将会闪烁green | blue

2 个答案:

答案 0 :(得分:2)

如果可以使用non-perfect browser support,可以使用css变量。

:root {
  --bg: red;
}

.red {
  height: 100px;
  width: 100px;
  background-color: var(--bg);
}

.make-green {
  --bg: green;
}

.flash {
  animation: color 2s infinite;
}

@keyframes color {
  0% {
    background-color: blue;
  }
  50% {
    background-color: var(--bg);
  }
  100% {
    background-color: blue;
  }
}
<div class='red make-green flash'></div>
<div class='red flash'></div>

答案 1 :(得分:0)

这是另一个没有CSS变量的想法,您可以在其中稍微更改动画以考虑元素的初始状态。在不指定100%状态的情况下,浏览器将自动考虑元素内指定的值。

.red {
  background-color: red;
}

.make-green {
  background-color: green;
}


.flash {
  animation: flashE 1s infinite alternate;
}

@keyframes flashE {
  0% {
    background-color: blue;
  }
}
<div class='red flash'>Some text</div>

<div class='red make-green flash'>Some text</div>