キーは、数式でマージンを移行することです。それが浮かんでいる場合、移行中に迷惑をかけている小さな「揺れ」があります。それhttp://jsfiddle.net/xcWge/14/周囲に確保されたスペース内で膨張:
#square {
width: 10px;
height: 10px;
margin: 100px; /*for centering purposes*/
background: blue;
-webkit-transition: width 1s, height 1s, margin 1s;
-moz-transition: width 1s, height 1s, margin 1s;
-ms-transition: width 1s, height 1s, margin 1s;
transition: width 1s, height 1s, margin 1s;
}
#square:hover {
width: 100px;
height: 100px;
margin: 55px; /* inital margin - ((intial margin - width (or height))/2) */
}
オプション2:それhttp://jsfiddle.net/xcWge/18/周りの要素の上に展開:
EDITEDオプションを
オプション1を添加します
#square {
width: 10px;
height: 10px;
margin: 0; /*for centering purposes*/
background: blue;
-webkit-transition: width 1s, height 1s, margin 1s;
-moz-transition: width 1s, height 1s, margin 1s;
-ms-transition: width 1s, height 1s, margin 1s;
transition: width 1s, height 1s, margin 1s;
}
#square:hover {
width: 110px;
height: 110px;
margin: -50px; /* inital margin - ((intial margin - width (or height))/2) */
}
オプション3:流れの中で、それ以前の要素の上に展開され、それhttp://jsfiddle.net/xcWge/22/後の要素をシフト:
#square {
width: 10px;
height: 10px;
margin: 0;
position: relative;
top: 0;
left: 0;
background: blue;
-webkit-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
-moz-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
-ms-transition: width 1s, height 1s, top 1s, left 1s, margin 1s ;
transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
}
#square:hover {
width: 110px;
height: 110px;
top: -50px; /* inital top- (intial top-height)/2) */
left: -50px; /* inital left- (intial left-width)/2) */
margin-right: -50px;
margin-bottom: -50px;
}
私はあなたがそうええそれは同じだあなたが – ONYX