【问题标题】:css3 Transition transform let white space between elementscss3过渡变换让元素之间的空白
【发布时间】:2019-01-10 06:15:35
【问题描述】:

我有一个 2 div 之间的动画。理想情况下,我希望它们相互“推动”,这样感觉就像是一个在 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 的过渡持续时间,以便第二个接近,但无论如何我仍然有一个空白。

Here is a fiddle to play with

有什么想法吗?

编辑:我的项目中的 div 包含一些东西,所以当它放大或缩小看起来像是在转动时,这就是为什么我不单独使用简单的宽度或左过渡

【问题讨论】:

  • 你提供的小提琴看起来很奇怪,你想做什么我也不清楚,你能解释一下吗?

标签: html css css-transitions


【解决方案1】:

我认为您可以摆脱左转换并调整转换原点,以便两个 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>

【讨论】:

  • 是的,这是个好主意。我做了你的解决方案,我在我的 div 周围添加了一个包装器并为其左侧位置设置动画以获得完美的结果:) 谢谢!
猜你喜欢
  • 2013-06-17
  • 2012-12-31
  • 2020-12-22
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2014-08-16
  • 2012-01-06
  • 2014-08-26
相关资源
最近更新 更多