我想让一个词在鼠标悬停期间执行 CSS 动画后消失

Posted

技术标签:

【中文标题】我想让一个词在鼠标悬停期间执行 CSS 动画后消失【英文标题】:I want to make a word disappear after it performs a CSS animation during a mouseover 【发布时间】:2015-07-30 17:42:15 【问题描述】:

我试图让我的代码播放动画(一个单词在消失之前掉到页面底部),当鼠标悬停在类 div 中的一个单词上时,然后让它永远消失。

CSS 'visibility property' 允许我选择单词是否可见,但是当像我一样处理 'class:hover' 时,当鼠标没有悬停在单词的位置上时,单词会返回。与“显示:无”相同;

当在 onmouseover 的帮助下应用 javascript (document.getElementById("myP").style.visibility = "hidden";) 时,单词会消失而不播放 CSS 动画。 有没有办法让单词执行动画然后让它从页面上消失?

我无法向您展示我当前的代码,因为我很快将在最终项目中使用它。不过我会提供一个大纲:

   <style>
   .word:hover
        /*This makes the words fall to the bottom of the screen.*/
        -webkit-animation-name: fallDown; 
        -webkit-animation-duration: 6s; 
        animation-name: fallDown;
        animation-duration: 6s;
    

    #1
    position: absolute;
    left: 200px;
    top: 200px;
    

    /* Chrome, Safari, Opera */
    @-webkit-keyframes fallDown 
        0%   animation-timing-function: ease-in;
        100% top:97%; display: none;
    
    /* Standard syntax */
    @keyframes fallDown 
        0%   animation-timing-function: ease-in;
        100% top:97%; display: none;
    


    </style>
    </head>

    <body>
    <div class="word" id="1"> Falling </div>
    </body>

如果您有任何想法,请告诉我。

【问题讨论】:

不仅使用纯 CSS,还可以使用 JavaScript - jonsuh.com/blog/… 【参考方案1】:

你需要animationend - Event reference,它会在 CSS 动画完成时触发。

$('.word').hover( function()
    $(this).addClass('animated').on('animationend webkitAnimationEnd', function() 
    $(this).hide();
  );
);

这是css

.animated 
    -webkit-animation: fallDown 6s;
    animation: fallDown 6s;


DEMO(使用全页模式查看)

$('.word').hover( function()
    $(this).addClass('animated').on('animationend webkitAnimationEnd', function() 
    $(this).hide();
  );
);
/* Chrome, Safari, Opera */
@-webkit-keyframes fallDown 
    to top:97%; display: none;

/* Standard syntax */
@keyframes fallDown 
    to top:97%; display: none;

.word
    position: absolute;
    left: 200px;
    top: 200px;
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    
.animated 
    -webkit-animation: fallDown 6s;
    animation: fallDown 6s;

  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="word"> Falling </div>

【讨论】:

以上是关于我想让一个词在鼠标悬停期间执行 CSS 动画后消失的主要内容,如果未能解决你的问题,请参考以下文章

完成后如何保持CSS3动画静止,然后在鼠标消失后恢复

我需要在css中有两个动画,一个在开始,一个在悬停,但它不起作用

取消悬停时的 CSS3 动画

如何在鼠标离开元素后继续CSS动画:悬停?

悬停后div项目消失

悬停后如何继续CSS动画?