我知道您可以使用 CSS 过渡为不同的属性设置不同的持续时间。但是是否可以为同一属性设置不同的持续时间?
示例:我希望一个框在悬停/鼠标退出时快速增长/缩小到长度 A ,但是当按下按钮时,使用不同的类缓慢增长/缩小到长度 B。
这是一个例子:
目前,盒子只有在悬停时快速增长,当鼠标退出时它会慢慢收缩。当然这是意料之中的,因为该.box
课程应用了缓慢的持续时间,但是有没有办法解决这个问题?我已经制定了一种 hacky 方法setTimeout
和一个额外的“快速”类,但如果有更优雅的方法会很可爱。
注意:我知道这可以通过 jQuery 轻松完成。然而,我真的在寻找它与 CSS 一起工作,因为我在这个孤立的例子之外面临的实际问题是 3D 变换。保持简单的例子。:)
CSS:
.box {
background: red;
width: 100px;
height: 100px;
margin: 10px;
-webkit-transition: width 2s;
}
.lengthA
{
width: 300px;
-webkit-transition-duration: 0.2s; /* Can this be used when class removed? */
}
.lengthB {
width: 500px;
}
jQuery:
$('.box').on('mouseenter', function() {
$(this).addClass('lengthA');
})
$('.box').on('mouseleave', function() {
$(this).removeClass('lengthA');
})
$('.makeBig').on('click', function() {
$('.box').toggleClass('lengthB');
})
<strong>HTML:
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<button class="makeBig">Grow!</button>