gpt4 book ai didi

css - 如何使用 CSS 计时函数来制作弧形动画?

转载 作者:行者123 更新时间:2023-11-28 08:36:01 25 4
gpt4 key购买 nike

我只想使用 CSS 来为一个对象设置动画以使其在弧形中移动并在返回的路上沿着相同的路径

这是我目前所拥有的(已简化)。 Full JSfiddle

<div class="container">
<div class="outer">
<div class="inner"></div>
</div>
</div>

.outer { transition: all 1.5s ease; }
.inner { transition: all 1.5s cubic-bezier(0.000, 0.590, 0.460, 1.005); }

.container:hover .outer { transform: translateY(180px); }
.container:hover .inner { transform: translateX(180px); }

如您所见,第一部分正在按我想要的方式运行。它沿外凸弧向下移动。但是当它回来时,它会以内凸弧的方式回来。我怎样才能让它仅使用 CSS 返回相同的路径?

最佳答案

尝试使用 rotateZ 来旋转垂直元素,类似于下面的解决方案。请注意需要将 top 设置为 -20px 以便将旋转的元素保持在容器的边界内,以及 transform-origin 用于设置旋转点在元素的左下角。

.container { 
font-size: 0;
height: 180px;
width: 180px;
border: 1px solid tomato;
}

.outer {
transform-origin: 0 100%;
display: inline-block;
width: auto;
height: 100%;
position: relative;
top: 0;
transition: all 1.5s cubic-bezier(0, .59, .46, 1);

/* border added to better visualize behaviour */
border: 1px dashed blue;
box-sizing: border-box;
}
.inner {
display: inline-block;
height: 20px;
width: 20px;
background: tomato;
border-radius: 50%;
}

.container:hover .outer {
/* -2px added because of blue border */
/* without the border this would be the same as -1*(.inner's width) */
top: -22px;
transform: rotateZ(90deg);
}
<div class="container">
<div class="outer">
<div class="inner"></div>
</div>
</div>

关于css - 如何使用 CSS 计时函数来制作弧形动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com