トップダウンからダウントップの高さの増加経路を変更したいCSSで可能ですか?これは私のコードです
http://jsfiddle.net/yasharshahmiri/1pkemq1p/3/
.buttom{
margin-top:200px;
margin-right:34px;
width:150px;
height:45px;
background:black;
float:right;
transition-duration:2s; }
.buttom:hover{
height:180px;
transition-duration:2s;}
必要なのは、position: absolute
とbottom
の位置を次のように設定することだけです。
.buttom{
margin-top:200px;
margin-right:34px;
width:150px;
height:45px;
background:black;
float:right;
position:absolute;
bottom: 10px;
transition: height 2s ease-in-out
}
.buttom:hover{
height:180px
}
<div class='buttom'> </div>
Rotate および transform-Origin を使用して、要素に対する相対位置を設定できるようにします
.buttom{
margin-top:200px; /* this shall be higher than the height on hover*/
margin-right:34px;
width:150px;
height:45px;
background:black;
transition: height 2s ease-in-out ;
transform: rotatex(180deg);
transform-Origin: top;
}
.buttom:hover{
height:180px
}
<div class='buttom'> </div>
またはこのように:
.buttom{
width:150px;
height:45px;
background:black;
transition: height .3s cubic-bezier(0.175, 0.885, 0.32, 1.275) ;
transform: rotatex(180deg) translate3d(0, -200px,0);/* the Y-Value shall be higher than the height on hover*/
transform-Origin: top;
}
.buttom:hover{
height:180px
}
<div class='buttom'></div>
あなたは賢いトリックをすることができます:高さが下から上に成長しているように見えるように高さと同時にmargin-top
を変更します:
.buttom:hover {
height: 180px;
margin-top: 65px;
transition-duration: 2s;
}
最終的なmargin-top
(65px)は、開始margin-top
(200)と、結果の(180px)および初期(45px)の高さの差分の差です:65 = 200 180-45)。この場合、ブロックは成長している間、視覚的に固定されたままになります。
@PlantTheIdea(素敵な名前)が答えを持っていました。注意点(絶対配置)は、レイアウトによってはかなり大きなものですが、その仕組みは次のとおりです。
.bottom-wrap { position: relative; height: 180px;}
.bottom { position: absolute; bottom:0; width: 100px; height: 20px;
background: #000;
transition: height 0.2s ease-in-out;
}
.bottom:hover { height: 180px; }
<div class="bottom-wrap">
<div class="bottom">
</div>
</div>
absolute
の位置を<div>
に設定する必要があります。
.buttom {
width: 150px;
height: 45px;
background: black;
transition-duration: 2s;
position: absolute;
right: 10%;
bottom: 10%;
}
.buttom:hover {
height: 180px;
transition-duration: 2s;
}
<div class='buttom'></div>