2016-06-28 8 views
2

divを上に移動したときにdivを上にアニメーションしようとしています。divを大きくし、大きなセクションを上に移動します。

アニメーションを大きくすることができますが、アニメーションは下向きです。私はdivの底を同じ場所にとどまらせようとしており、divのサイズを上に滑らかにアニメーション化しています。

See jsfiddle here whichは、現在私のコードが行っていることを示しています。以下

参照してくださいコード:

.box { 
 
    height: 170px; 
 
    padding-bottom: 15px; 
 
    width: 50%; 
 
} 
 

 
.content { 
 
    background-color: #e3e4e6; 
 
    height: 100%; 
 
    text-align: center; 
 
} 
 

 
.content:hover { 
 
    height: 110%; 
 
}
<div class="box"> 
 
    <div class="content">TEST</div> 
 
</div>

+0

あなたは高さを増やす場合は底部に向かっつもり増加です。 –

+0

@ Piyush.kapoorだから私はこの動作を切り替えるには –

+0

これを試してみてください。https://jsfiddle.net/pkapoor1989/utqdpfcz/1/ –

答えて

6

これはtransform:scaleY()を使用し、transform-originbottomに設定します。私はまた、効果をより良く見るためにmargin-top:100pxを置く。また、transitionを使って縮尺をスムーズにすることができます

また、テキストの縮尺を変更する必要があります。

はこちらをご覧ください:jsfiddle

あなたが戻って、それはあなたがdiv要素をスケーリング同じ時間で元の状態だと、テキストを拡張する必要があります。あなたがdivを2倍にスケールするならば。 1/3で縮尺を変えても同じようにテキストを1/2に縮尺する必要があります。1/3で縮尺する場合

この場合、.content1.5で拡大するので、1 /1.5 = 0.66

コード:

.box { 
 
    height: 170px; 
 
    padding-bottom: 15px; 
 
    width: 50%; 
 
} 
 

 
.content { 
 
    background-color: #e3e4e6; 
 
    height: 100%; 
 
    text-align: center; 
 
    margin-top: 300px; 
 
    transition:0.3s; 
 
} 
 

 
.content:hover p { 
 
    transform: scaleY(0.66) 
 
} 
 

 
.content:hover { 
 
    transform: scaleY(1.5); 
 
    transform-origin: bottom; 
 
}
<div class="box"> 
 
    <div class="content"> 
 
    <p> 
 
     TEST 
 
    </p> 
 
    </div> 
 
</div>

0

あなただけのCSSを使用したい場合は、単に使用:

.content:hover { 
    margin-top: -50px; 
    height: 110%; 
} 

が持つjsFiddle

+0

私はdivの一番下が同じ場所に残るようにします。 –

+0

高さを=マージンの高さに変更するhttps://jsfiddle.net/x3cL1cpt/8/ – Alexis

-1

設定しtopプロパティを参照してください。ヴァルheight - 100 * -1

https://jsfiddle.net/x3cL1cpt/7/

.content:hover { 
    height: 110%; 
    top: -10%; 
    position: relative; 
} 

なぜ相対位置のUE?私はボックスを移動するが、ボックスが占有していたスペースを変更することはないからだ。その領域を変更する必要がある場合は、topmargin-topに変更してください。

0

拡大するための一番上にある任意のスペースがないので、あなたは最初に余分なマージンを与え、このJsFiddleようホバー上でそれを削除すること -

.box { 
    height: 170px; 
    padding-bottom: 15px; 
    width: 50%; 

} 

.content { 
    background-color: #e3e4e6; 
    height: 100%; 
    text-align: center; 
    margin-top:25px; 
} 

.content:hover { 
    height: 110%; 
    margin-top:0; 
} 
1

私は他のアイデアを持っていません(このようにそれを試してみてください。 ..):あなたはクラス "コンテント"よりも大きな高さをクラス "ボックス"に与えることができます(私は赤い枠線を囲んで、それを見ることができます)。その後、flexboxを使って、クラスの "content"を底に置くことができます。その後、ホバリングで上腕を上向きにして埋め替えることができます。トランジションを使用すると、素敵なアニメーションを作成できます。これで十分ですね。おそらく、私はアイデアを持っていない瞬間にjQueryの方法もあります。これがあなたに役立つかどうか私に教えてください(私が質問をうまく理解しているかどうかはわかりません) - 乾杯。 (重要:この高さなどでテストのためだけのランダムな値です)

.box { 
 
    display: flex; 
 
    justify-content: flex-end; 
 
    flex-direction: column; 
 
    height: 100px; 
 
    border: 1px solid red; 
 
} 
 
.content { 
 
    background-color: #e3e4e6; 
 
    height: 50px; 
 
    width: 100%; 
 
    text-align: center; 
 
    -webkit-transition: height 1s; 
 
    /* Safari */ 
 
    transition: height 1s; 
 
} 
 
.content:hover { 
 
    height: 100%; 
 
}
<div class="box"> 
 
    <div class="content">TEST</div> 
 
</div>

-1

transitionを追加するために必要な、あなたの現在と、このCSSを置き換え:

あなたが行うことができます
.box { 
    height: 170px; 
    padding-bottom: 15px; 
    width: 50%; 
} 

.content { 
    background-color: #e3e4e6; 
    height: 100%; 
    text-align: center; 
    transition: 1s all ease; 

} 

.content:hover { 
     transform: scaleY(1.2); 
    transform-origin: bottom right; 
} 
関連する問題