使用animation
下面对最初设置为display: none;
.child
时的不透明度进行动画处理。
body {
margin: 0;
}
@keyframes fadeOut {
to {
opacity: 0;
}
}
.wrapper {
width: 100vw;
height: 100vh;
}
.wrapper .child {
width: 200px;
height: 200px;
background-color: red;
display: none;
}
.wrapper:hover .child {
display: block;
animation: fadeOut 1s ease forwards;
}
<div class="wrapper">
<div class="child">
</div>
</div>
尝试使用transition
而不是animation
不起作用。
使用transition
body {
margin: 0;
}
@keyframes fadeOut {
to {
opacity: 0;
}
}
.wrapper {
width: 100vw;
height: 100vh;
}
.wrapper .child {
width: 200px;
height: 200px;
background-color: red;
display: none;
}
.wrapper:hover .child {
display: block;
transition: opacity 1s ease;
opacity: 0;
}
<div class="wrapper">
<div class="child">
</div>
</div>
这在animation
情况下是如何工作的,为什么在transition
情况下不起作用?
添加作为答案以帮助未来的访问者。
从这个链接: https://tympanus.net/codrops/css_reference/keyframes/这里是相关部分:
"主要区别在于,虽然过渡在属性值更改时隐式触发(例如,当悬停时属性值更改时(,但在应用动画属性时显式执行动画。">
这是transition
和animation
之间的重要区别。
以下是设置display: block
后关于display: none
和过渡的相关答案(如用户 David 的评论中所述(: 从显示无更改为阻止时过渡不起作用