当使用transform
和keyframes
结合使用时,我试图实现DRY CSS代码。比方说,我有以下几点:如何在使用变换和关键帧时创建干燥CSS
HTML
<div id="box"></div>
CSS
#box {
width:300px;
height:300px;
background-color:red;
animation: animate 5s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
@keyframes animate {
from {
transform: scale(0.8) translateY(100px) rotate(10deg);
}
to {
transform: scale(0.8) translateY(100px) rotate(-10deg);
}
}
如何防止在动画中执行scale(0.8)
和translateY(100px)
?我只希望它来回旋转,而不必在每个步骤的变换内应用这些属性。在这里,只使用两个步骤(from
和to
),但是如果使用多个步骤(例如用0%
,20%
,40%
,60%
,80%
,100%
),这将意味着有大量重复的代码。正如你可以想象的那样,当稍后出现更改时,这不是很好。
最终,我正在寻找这样的事情(这是不可能的,因为transform
属性将得到重写):
#box {
transform: scale(0.8) translateY(100px);
}
@keyframes animate {
from {
transform: rotate(10deg);
}
to {
transform: rotate(-10deg);
}
}
这甚至可能吗?
Ps。我不在寻找答案,您可以将width
/height
更改为scale
和/或将margin
/top
属性更改为translate
。 LESS/SASS也没有使值容易改变,因为它仍然会导致重复的代码。
尽管我对解决方案并不满意,但现在我明白了解决方案是不可能的。然而,你的第二个选择对我来说更好,因为不需要复制粘贴。非常感谢! – MarcoK
@MarcoK谢谢,说实话,这是我第一次看到DRY的概念。我可能会在我的网站上使用它来进行一些重复的重复样式。 – apaul