2017-11-04 13 views
2

私はdivを持っていて、ホバリング(ただY)でスケーリングしようとしています。問題は、transitionなしでうまく動作することです。私がtransitionを使用するとき、divは上から少しスケールして行くdivを避ける方法はどうですか?私はそれを上にバウンスすることなく、まっすぐにスケールしたいです。 http://jsfiddle.net/q9akawr6/21/Transform:scale issue

HTML

<div></div> 

CSS

div{ 
    width:100px; 
    height:100px; 
    margin:100px; 
    background-color:red; 
    transition:.2s; 
} 
div:hover 
{ 
    transition:.2s; 
    transform-origin:top; 
    transform:scaleY(2.0); 
} 
+3

をあなたの '移行中の特定う:0.2秒線形変換;'今、それはまたですので初期値(50%50%)から新しい値(50%0%)への変換元を「バウンス」に遷移させます。 –

答えて

3

Nietは述べている、または単にdiv:hover{}のではなく、div{}規則でこれを入れたよう:

transition:.2s; 
transform-origin:top; 

を同じ理由(変換 - 間違った時に起源)。

+1

これは機能しますが、変更されたルールのみを影響を受ける状態に保つ必要があります。ホバーで変換元またはトランジションを指定した場合は、ホバリング時に変換元またはトランジションを再計算しなければならず、このようなバウンシング効果が発生します。 – Diego

0

あなたが余白領域のためにバウンスするdiv。私はあなたのコードを変更しようとします。

<div class="container"> 

<div class="demo"></div> 

</div> 

CSS:以下

HTMLチェック

div.container 
{ 
    width:300px; 
    height:300px; 
    border:1px solid gray; 
} 
div.demo{ 
    width:100px; 
    height:50px; 
    margin: 100px auto; 
    background-color:red; 
    transition:.2s; 
    transform-origin: left top; 
} 
div.demo:hover 
{ 
    transition:all .2s linear; 
    transform-origin: top; 
    transform:scaleY(2.0); 
}