假设我有一个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
。
答案 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>