https://jsfiddle.net/elgs/580nhepk/11/
ease-in
这个小演示正在尝试使用计时/缓动功能向上/向下滑动 div 。但是,似乎缓和效果只有在第一次下滑时才有效。从第二次开始,宽松的效果似乎消失了。
HTML
<button id='slideup'>Slide Up</button>
<button id='slidedown'>Slide Down</button>
<div id="a"></div>
Javascript
const a = document.querySelector('div#a');
const u = document.querySelector('button#slideup');
const d = document.querySelector('button#slidedown');
u.addEventListener('click', (e) => {
a.style.setProperty('--height', '30px');
a.classList.add('slide');
});
d.addEventListener('click', (e) => {
a.style.setProperty('--height', '100px');
a.classList.add('slide');
});
CSS
div#a {
width: 100px;
height: 100px;
box-sizing: border-box;
border: 1px solid gray;
}
@keyframes slide {
to {
height: var(--height);
}
}
.slide {
animation-name: slide;
animation-duration: .4s;
animation-timing-function: ease-in;
animation-delay: 0s;
animation-direction: normal;
animation-iteration-count: 1;
animation-fill-mode: forwards;
animation-play-state: running;
}