退出悬停时反转动画

Posted

技术标签:

【中文标题】退出悬停时反转动画【英文标题】:Reverse animation when exiting hover 【发布时间】:2021-11-13 10:38:03 【问题描述】:

当将鼠标悬停在单词上时,它会出现平滑的动画,但是当我们退出悬停状态而不是反转动画时,它就会被切断。在进入悬停状态和退出悬停状态时如何使动画平滑?

示例如下:

*
  font-size: 50px;

.container a
    position:relative;
    float:left;
    font-family: 'Montserrat', sans-serif;
    font-weight:bold;
    margin-left: 5%;
    padding-right: 10px;

.child
    position:relative;
    float:left;
    display:none;
    padding-left: 10px;
    font-weight:bold;

.container:hover > .child
    transition: .4s;
    color:#F0C930;
    border-left: 4px solid #F0C930;
    animation: effect .5s;
    display:block;

@keyframes effect
from
position:relative;
padding-left: 0px;
opacity:0;
to
position:relative;
padding-left: 10px;
opacity:1;
    

<p>hover over "Word"</p>
<div class="container">
  <a>Word</a>
  <div class="child">Word</div>
 </div>

【问题讨论】:

你确定要使用动画吗?过渡和转换不是更适合这个吗? 这是我想到的第一个想法,但我无法让转换工作,所以我决定使用关键帧动画 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

使用 CSS transition 处理不透明度和填充。 CSS Transition

.container 
  display: flex;
  font-size: 50px;
  cursor: pointer;


.container .child 
  transition: opacity .5s, padding .5s;
  border-left: 4px solid #F0C930;
  opacity: 0;
  margin-left: 20px;
  color: #F0C930;


.container:hover .child 
  opacity: 1;
  padding-left: 20px;
<div class="container">
  <a>Word</a>
  <div class="child">Word</div>
</div>

【讨论】:

这行得通!非常感谢 @Sakumi:很高兴你得到了一些指导。如果有帮助,请考虑接受答案。

以上是关于退出悬停时反转动画的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX 过渡 - 悬停时变暗按钮

当元素失去悬停时反转动画

悬停后鼠标移出时反转不透明度动画

即使您在中途停止悬停,如何强制动画完成然后反转以开始悬停?

鼠标在内部组件悬停时退出

使用 jQuery 在悬停/退出时展开/缩小 div