css规模变换如何影响文档流?

Geo*_*uer 7 css transform

我真的很困惑如何使用css转换缩放元素会影响文档流.

考虑这个jsbin本codepen因为jsbin似乎已经下来,我有

p{slipsum text}
#scaled
  #scaled-content{some text}
p{slipsum text}
Run Code Online (Sandbox Code Playgroud)

与样式表

#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
}
Run Code Online (Sandbox Code Playgroud)

我希望这与单个100x100蓝色方块相似.但是它被移动并且在铬上甚至略微重叠了下面的p元素.此外,检查devtools中#scaled的尺寸显示为蹲下和长时间,似乎超出它的100x100盒子.

最后,添加overflow: hidden;到#scaled完全是疯狂的事情.

到底是怎么回事?内容流如何受到影响?

chr*_*lez 11

CSS Transform不会影响文档流.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>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 您的示例的问题是:1.包含元素是100px x 100px,其中有400px的正方形.因此,蓝色方块将从包含框中溢出.2.您对包含元素的25%缩放比例是缩放该框的所有内容,但是从容器的中心缩放它.因此,由于您实际上有一个100px高度的容器和300px的垂直溢出,蓝色方块仍将位于包含100px的元素之外.快速修复您的示例是添加-prefix-transform-origin:0 0; 到#scaled从左上角强制缩小比例. (2认同)