CSSトランジションを使用して、left: 0px
からright: 0px
に設定された位置の間で何かをアニメーション化して、画面全体に表示することは可能ですか?同じことを上から下に達成する必要があります。画面の幅/オブジェクトサイズの計算にこだわっていますか?
#nav {
position: absolute;
top: 0px;
left: 0px;
width: 50px;
height: 50px;
-webkit-transition: all 0.5s ease-out;
}
.moveto {
top: 0px;
right: 0px;
}
そしてjQueryの.addClass
を使用します
アニメーション要素の幅/高さがわかっている場合は、位置(上、下、左、右)をアニメートしてから、対応するマージンを差し引くことができます。
_.animate {
height: 100px;
width: 100px;
background-color: #c00;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
transition: all 1s ease;
position: absolute;
left: 0; /*or bottom, top, right*/
}
_
そして、位置に応じてアニメーション化します...
_.animate.move {
left: 100%; /*or bottom, top, right*/
margin-left: -100px; /*or bottom, top, right */
}
_
この実装はおそらくtransform: translate(x,y)
でよりスムーズになりますが、より理解しやすいようにこのように保ちます。
これはChromiumでうまくいきました。変換の%は、適用される要素の境界ボックスのサイズを参照するため、要素を右下のEdgeに完全に取得し、位置の指定に使用するプロパティを切り替える必要はありません。
topleft {
top: 0%;
left: 0%;
}
bottomright {
top: 100%;
left: 100%;
-webkit-transform: translate(-100%,-100%);
}
最新のブラウザ(IE 10+を含む)で calc()
を使用できるようになりました:
.moveto {
top: 0px;
left: calc(100% - 50px);
}