CSS3 Transition转换让元素之间的空白

时间:2019-01-09 15:35:00

标签: html css css3 css-transitions

我在2格之间有一个动画。从概念上讲,我希望彼此“推”,使它感觉像是在Z轴上旋转的3d框。

我有这个

body {
  overflow:hidden
}

div {
  position:absolute;
  display:inline-block;
  margin:0;
}

div:first-child {
  left:0;
  width:100%;
  height:100%;
  background-color:#453525;
  transform:scaleX(1);
  transition:transform .8s ease-out, width .8s ease-in, left .8s ease-in;
}
div:nth-child(2) {
  left:101%;
  width:0;
  height:100%;
  background-color:#754512;
  transform:scaleX(0);
  transition:transform .8s ease-out, width .8s ease-in, left .8s ease-in;
}

body:hover div:first-child {
  transform:scaleX(0);
  width:0;
  left:-101%;
}

body:hover div:nth-child(2) {
  transform:scaleX(1); 
  width:100%;
  left:0;
}
<div>
</div>
<div>
</div>

如您所见,我的div之间有很大的空间。我试图降低第一个div的过渡时间,以使第二个div接近,但是无论我还有什么空白。

Here is a fiddle to play with

有什么主意吗?

编辑:我项目中的div包含一些内容,因此当它向上或向下缩放时好像在转弯,这就是为什么我不单独使用简单的宽度或左移的原因

1 个答案:

答案 0 :(得分:2)

我认为您可以摆脱左移并调整变换原点,以便两个div保持链接:

body {
  overflow:hidden;
  margin:0;
  height:100vh;
}

div {
  position:absolute;
  display:inline-block;
  margin:0;
}

div:first-child {
  left:0;
  width:100%;
  height:100%;
  background-color:#453525;
  transform:scaleX(1);
  transform-origin:right;
  transition:transform .8s ease-out, width .8s ease-in;
}
div:nth-child(2) {
  right:0;
  width:0;
  height:100%;
  background-color:#754512;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .8s ease-out, width .8s ease-in;
}

body:hover div:first-child {
  transform:scaleX(0);
  width:0;
}

body:hover div:nth-child(2) {
  transform:scaleX(1); 
  width:100%;
}
<div>
</div>
<div>
</div>