【问题标题】:Different CSS transition-delays for hover and mouseout?悬停和鼠标悬停的不同 CSS 过渡延迟?
【发布时间】:2011-08-20 17:38:00
【问题描述】:

是否可以在“状态”之间使用具有不同延迟切换的 CSS3 转换?例如,我试图让一个元素在悬停时立即更高,然后在“mouseout”上等待一秒钟,然后再滑回元素的初始高度。

演示页面: jsfiddle.net/RTj9K(将黑框悬停在右上角)

CSS: #bar { transition:.4s ease-out 0, 1s; }

我认为最后的时间安排与延迟有关,但它似乎不像我想象的那样工作。

【问题讨论】:

标签: css transitions css-transitions


【解决方案1】:

如果您想在hovermouseout 上设置不同的 CSS 过渡延迟,您必须使用相关的选择器来设置它们。在下面的示例中,当元素悬停时,悬停的初始延迟为0,但在mouseout 上,过渡延迟1s

/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; } 

/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0s; }

您可以在下面我问题的更新演示中找到完整的 CSS。我使用了简写transition 属性,值的顺序是:

transition:<property> <duration> <timing-function> <delay>;

答案演示:http://jsbin.com/lecuna/edit?html,css,output

【讨论】:

  • 我看到的问题是当你快速移动鼠标时它会卡在中间直到你的延迟消失..
  • @apieceofbart 您可以通过有条件地应用另一个未在 ontransitionend 侦听器中设置转换延迟的类来解决此问题
  • @OlegVaskevich 实际上我在这里有一个类似的问题:stackoverflow.com/questions/40594931/… 给出了一个漂亮的答案:)
【解决方案2】:

这是一个简化的JSFiddle example。基本上你需要transition-delay 属性:

#transform {
    height:40px;
    width:40px;
    background-color:black;
    transition: .4s ease-out; 
    transition-delay: 2s;
    /*or shorthand: transition: .4s ease-out 2s;*/
}

#transform:hover {
    transition: .4s ease-out; 
    width:400px;
}

【讨论】:

  • 假设有两个元素。悬停时,我希望第一个出现在第二个之前;然后当鼠标离开时,我希望第二个先消失,然后第一个消失。真的无法得到它......如果它可以工作也没有
  • @Ben 发个问题,我来看看。还显示一些html。我认为你应该在每个元素上有不同的动画。在悬停动画中,A 的延迟应该小于 B 的延迟。在非悬停动画上,它应该被反转。 PS:我不是这些方面的专家......我只是摆弄直到它起作用:)
【解决方案3】:
/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; } 

/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0; }

只是说如果你不输入's'(秒)符号这将不起作用,所以:

/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; } 

/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0s; }   /* note "0s" */

【讨论】:

  • 关于将“s”添加到0 的注释非常重要。我只是被它咬了,但想通了。 +1
猜你喜欢
  • 2012-03-12
  • 2018-12-19
  • 2016-12-20
  • 2012-08-30
  • 1970-01-01
  • 2014-03-17
  • 2010-12-03
  • 2015-12-12
  • 2012-12-06
相关资源
最近更新 更多