CSS トランジションを使用して、さまざまなプロパティにさまざまな期間を設定できることを知っています。しかし、同じプロパティに異なる期間を設定することは可能ですか?
例:ホバー/マウスを終了するとボックスの幅が長さ Aに急速に拡大/縮小し、ボタンが押されると幅が長さ Bにゆっくり拡大/縮小するように、別のクラスを使用します。
次に例を示します。
現時点では、ボックスはホバリング時にのみ急速に拡大し、マウスを離すとゆっくりと縮小します。もちろん、この.box
クラスには遅い持続速度が適用されているため、これは予想されますが、これを回避する方法はありますか? 私はそれを行うハックな方法とsetTimeout
余分な「高速」クラスを考え出しましたが、もっとエレガントな方法があれば素敵です。
注:これは jQuery で簡単に実行できることを認識しています。ただし、この孤立した例の外で直面している実際の問題は 3D 変換にあるため、CSS で動作することを本当に探しています。例のために単純に保ちます。:)
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>