2013-01-17 11 views
6

私は、CSSの変換を使って要素を拡大縮小すると、ドキュメントの流れにどのように影響するのか本当に混乱しています。私はスタイルシートCSSのスケール変換はドキュメントフローにどのような影響を与えますか?

#scaled-contents { 
    height: 400px; 
    width: 400px; 
    background-color: blue; 
    color: red; 
    font-size: 3em; 
} 

#scaled { 
    transform: scale(0.25, 0.25); //browser prefixes... 
    width: 100px; 
    height: 100px 
} 

p{slipsum text} 
#scaled 
    #scaled-content{some text} 
p{slipsum text} 

を持って

Consider this jsbinまたはthis codepen since jsbin seems to have gone down私は、これは、単一の100x100の青い四角と同様に現れることを期待します。しかし、それはシフトされ、クロム上で次のp要素と少し重なる。さらに、devtoolsの#scaledの大きさを調べると、それは100x100ボックスを超えて一見壊れていて長く見えます。

最後に、overflow: hidden;を#scaledに追加すると、何か狂ったことが起こります。

何が起こっていますか?コンテンツフローはどのような影響を受けると思われますか?

+0

リンクが死んでいる...我々はフィドルを得ることができますか? – Mooseman

+0

@Mooseman - オハイオ州ダム、これはちょうど数分前に生きていた、私はそれを使用しました。さて、すべてを書き直さなければならない –

+0

@Mooseman - codepenで更新http://codepen.io/anon/full/twGzE –

答えて

9

CSSトランスフォームはドキュメントフローに影響しません。 DOM要素はページフロー内の元の位置と寸法を占有します。

同じ大きさの3つのdivがあり、行内にインラインで表示され、-webkit-transform:scale(2)を中央の四角に適用すると、この四角形は200%大きくなり、元の位置の中心になり、他の四角形と重なります。

参考例:

http://jsfiddle.net/ypnEk/

HTML:

<div class="square one"></div> 
<div class="square two"></div> 
<div class="square three"></div> 

CSS:

.square{ 
    margin-top:50px; 
    width:50px; 
    height:50px; 
    display:inline-block; 
} 

.one{ 
    background:#222; 
} 

.two{ 
    background:#888; 
    -webkit-transform: scale(2); 
} 

.three{ 
    background:#ccc; 
} 
+0

私の事例で何が起こっているのか分かりません。要素をスケールし、その上に高さ/幅を設定すると、それは要素そのものまたはその内容だけを拡大するのでしょうか?そして、なぜ他の要素と重なり合うのでしょうか? –

+2

あなたの例の問題は次のとおりです。1.包含要素は100px x 100pxで、その内側には400pxの正方形があります。このように、青い四角はその箱から溢れていきます。 2.包含する要素の25%のスケールは、そのボックスのすべての内容を拡大しますが、コンテナの中央から拡大縮小しています。 100pxの高さと300pxの垂直オーバーフローのコンテナが効果的に存在するため、青色の四角形は100pxを含む要素の外側に配置されます。あなたの例のための簡単な修正は、-prefix-transform-originを追加することです:0 0;スケールを左上から強制的に#scaledにします。 – chrisgonzalez

+0

ああ、 'transform-origin'が私が欠けていた鍵でした。それは私が欲しかったのですが、翻訳しません。 –

関連する問題