animation
以下内容将.child
的初始不透明度设置为display: none;
。
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
情况下不起作用?
答案 0 :(得分:1)
添加答案以帮助将来的访问者。
通过此链接:https://tympanus.net/codrops/css_reference/keyframes/这里是相关部分:
“主要区别在于,当属性值更改时(例如,当悬停时属性值更改),转换会隐式触发,而在应用动画属性时会显式执行动画。” < / p>
这是transition
和animation
之间的重要区别。
以下是有关display: none
的相关答案,并且在设置了display: block
之后过渡(如用户David的评论中所述):Transition not working when changing from display none to block