html - css3过渡变换让元素之间的空白
问题描述
我有一个 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 的过渡持续时间,以便第二个接近,但无论如何我仍然有一个空白。
任何想法?
编辑:我项目中的 div 包含一些东西,所以当它放大或缩小看起来像是在转动时,这就是为什么我不单独使用简单的宽度或左过渡
解决方案
我认为您可以摆脱左转换并调整转换原点,以便两个 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>
推荐阅读
- sql - 由于“ORDER BY”在视图定义中不起作用,我们如何在 db2 视图中对数据进行排序?
- javascript - Rails,webpacker:在哪里/何时在类中使用 import 语句,以及在 pack/application.js 中要求的目的是什么?
- reactjs - 手动部署收到错误“app.json 必须包含 JSON 对象”
- jenkins - Jenkins 作业无法将 tar 文件推送到 s3 存储桶
- python - 如何从python中的同一个大列表中制作项目对
- python - 如何使用 Selenium 抓取 innerHTML 以获取 NFL 投注数据?
- javascript - 在 vue js 中监听 $emit 并在处理程序中使用 value 以及 parent 的 value
- kotlin - Kotlin 活动重启
- java - Android api29 如何在安装时在主屏幕上自动添加应用程序图标?
- python - 如何使用 matplotlib 绘制一条平行于 y = x 线的线?