假设我有一个div
,其中height
指定为100px
,我想对其进行动画处理,使其以固定 {{1} }高度。
下面的代码片段显示了我如何成功实现它。
20px
@keyframes foo {
0% {
height: 100px;
}
50% {
height: 120px;
}
100% {
height: 100px;
}
}
#foo1 {
background-color:blue;
width:100px;
height:100px;
animation-name: foo;
animation-duration: 1.4s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
但是如果我需要在CSS外部设置<div id='foo1'>
属性,以使其不是height
的特定值,并且可以将其更改为任何其他值,那我该怎么办?为固定的100px
中递增的height
设置动画?
是否可以将动画值设置为原始元素值的偏移量?
答案 0 :(得分:3)
如果您没有任何内容,这是一个简单的视觉动画,请增加填充量:
@keyframes foo {
0%,100% {
padding-bottom: 0px;
}
50% {
padding-bottom: 20px;
}
}
#foo1 {
background-color:blue;
width:100px;
height:100px;
animation-name: foo;
animation-duration: 1.4s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
<div id='foo1'>
或使用CSS变量:
@keyframes foo {
0%,100% {
height:var(--h,100px)
}
50% {
height:calc(var(--h,100px) + 20px);
}
}
#foo1 {
background-color:blue;
width:100px;
height:var(--h,100px);
display:inline-block;
animation-name: foo;
animation-duration: 1.4s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
<div id='foo1'></div>
<div id='foo1' style="--h:50px;"></div>
答案 1 :(得分:1)
我认为没有直接的方法,但是您有几种解决方法:
padding
(例如padding-bottom
)来扩展元素的高度-仅在元素不应该让文本内容流入填充中时适用border
–与上面相同::after
height
“外部”进行了设置,可能是您在使用JS进行了设置?