【发布时间】:2019-03-04 05:39:02
【问题描述】:
运行下面的代码 sn-p - 点击圆圈来切换动画。应该发生的是,随着父容器的缩放,子容器应该看起来好像没有移动。
这是通过以与放大父组件相同的比例缩小子组件来实现的(父组件缩放为 4,子组件缩放为 0.25)。
当动画完成时,缩放是正确的,但是在动画过程中,它们看起来并没有一致地缩放。
这几乎就像父母先缩放,然后完成子缩放。
这是某种浏览器限制吗?还是我做错了什么?
谢谢!
const outer = document.querySelector('.outer');
outer.addEventListener('click', () => {
outer.classList.toggle('outer--active');
});
body { overflow: hidden; }
.outer {
width: 100px;
height: 100px;
overflow: hidden;
border-radius: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transform-origin: top left;
transition: transform 1s;
cursor: pointer;
border: 1px solid black;
}
.outer--active {
transform: scale(4) translate(-50%, -50%);
}
.inner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400px;
height: 400px;
background: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/49240/14.jpg') center repeat;
transform-origin: top left;
transition: transform 1s;
}
.outer--active .inner {
transform: scale(0.25) translate(-50%, -50%);
}
<div class="outer">
<div class="inner"></div>
</div>
【问题讨论】:
标签: css css-transitions css-transforms