gpt4 book ai didi

html - 在动画中调整 div 大小时变换原点问题

转载 作者:行者123 更新时间:2023-11-28 00:31:15 27 4
gpt4 key购买 nike

在尝试制作一个小的 css 动画时,我遇到了 css 的 transform-origin 属性的小问题。为了说明我在说什么,我用 cms 设计了我想要的东西,这是我想要得到的,但是使用 cms 的代码更复杂:

.main {
margin:30px;
box-sizing: border-box;
border-width: 1px;
border-style: solid;
background-color: rgb(230, 60, 60);
border-color: transparent;
width: 68px;
height: 25px;
transform-style: preserve-3d;
transform: translate3d(-8.93274px, -0.0896834px, 0px);
transform-origin: 33.9995px 12.5px 0px;
}
@keyframes gwd-gen-1wa0gwdanimation_gwd-keyframes {
0% {
width: 68px;
height: 25px;
transform-origin: 33.9995px 12.5px 0px;
transform: translate3d(-8.93274px, -0.0896834px, 0px);
animation-timing-function: cubic-bezier(0.415, 0.189, 0, 1.079);
}
14.2857% {
width: 185px;
height: 25px;
transform-origin: 33.9995px 12.5px 0px;
transform: translate3d(-8.93274px, -0.0896834px, 0px);
animation-timing-function: ease-out;
}
28.5714% {
width: 185px;
height: 25px;
transform-origin: 33.9995px 12.5px 0px;
transform: translate3d(-8.93274px, -0.0896834px, 0px);
animation-timing-function: cubic-bezier(0.255, 0.269, 0.445, 0.879);
}
42.8571% {
width: 68px;
height: 25px;
transform-origin: 12.4211px 12.5px 0px;
transform: translate3d(108px, 0px, 0px);
animation-timing-function: ease-out;
}
57.1429% {
width: 68px;
height: 25px;
transform-origin: 12.5035px 12.5px 0px;
transform: translate3d(108px, 0px, 0px);
animation-timing-function: cubic-bezier(0.415, 0.189, 0, 1.079);
}
71.4286% {
width: 185px;
height: 25px;
transform-origin: 34.0926px 12.5px 0px;
transform: translate3d(-9px, 0px, 0px);
animation-timing-function: ease-out;
}
85.7143% {
width: 185px;
height: 25px;
transform-origin: 34.0926px 12.5px 0px;
transform: translate3d(-9px, 0px, 0px);
animation-timing-function: ease;
}
100% {
width: 68px;
height: 25px;
transform-origin: 12.5583px 12.5px 0px;
transform: translate3d(-9px, 0px, 0px);
animation-timing-function: linear;
}
}
.main {
animation: gwd-gen-1wa0gwdanimation_gwd-keyframes 1.2s linear 0s 1 normal forwards running;
}

我尝试在不使用 3d 属性的情况下重现它,就像使用 cms 时一样,但我的问题是,当 div 调整大小时,它会在其末端移动,然后在它应该像 css 一样表现时改变方向。所以这就是我通过执行动画的第一部分得到的结果(我的 div 从右侧增长并在左侧缩小)但是它在调整大小时移动:

    .main{
animation: resize 2s ease 1 normal forwards;
height:30px;
width:200px;
background-color:red;
transform-origin:left;
margin-left:100px;
}
@keyframes resize {
0%{

}
50%{
transform-origin:left;
transform:scalex(2);
}
100%
{
transform-origin:right;
transform:scalex(0.8);
}
}
<html>
<head>
</head>
<body>

<div class="main"></div>

</body>
</html>

最佳答案

简单地改变比例是不正确的!您应该结合位置和比例。由于刻度不会改变实际位置。同样,对于您的 3D 动画,您也应该将多个动画组合在一起。这是我的解决方案。

.main{
animation: resize 2s ease 1 normal forwards;
height:30px;
width:200px;
background-color:red;
transform-origin:left;
margin-left:100px;
}
@keyframes resize {
0%{

}
50%{
transform-origin:left;
transform:scalex(2) ;
}
100%{
transform: translateX(100%);
}
}
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>

</head>
<body>
<div class="main"></div>
</body>
</html>

关于html - 在动画中调整 div 大小时变换原点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394633/

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