CSS动画转换转换也更改了Translatex,但在动画中未指定

发布于 2025-02-09 04:34:41 字数 589 浏览 1 评论 0原文

在这里,我有一个简单的CSS文件,其中包含2个动画。

.div
    transform: translateX(-50%);
}

.fade-in {
    animation-name: fade-in;
    animation-duration: .2s;
}

.fade-out {
    animation-name: fade-out;
    animation-duration: .2s;
}

@keyframes fade-out {
    0% {
        opacity: 100%;
    }
    100% {
        opacity: 0%;
        transform: translateY(-10px);
    }
}

@keyframes fade-in {
    0% {
        opacity: 50%;
        transform: translateY(-10px);
    }
    100% {
        opacity: 100%;
    }
}

为什么我只在动画键框中指定了翻译,它也会操纵转换属性中的Translatex?我该如何做到这一点,以便它只会改变y值?

Here, I have a simple CSS file containing 2 animations.

.div
    transform: translateX(-50%);
}

.fade-in {
    animation-name: fade-in;
    animation-duration: .2s;
}

.fade-out {
    animation-name: fade-out;
    animation-duration: .2s;
}

@keyframes fade-out {
    0% {
        opacity: 100%;
    }
    100% {
        opacity: 0%;
        transform: translateY(-10px);
    }
}

@keyframes fade-in {
    0% {
        opacity: 50%;
        transform: translateY(-10px);
    }
    100% {
        opacity: 100%;
    }
}

Why is it that even though I only specified translateY in the animation keyframes, it also manipulates the translateX in the transform property? And how can I make it so it only changes the Y value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦境 2025-02-16 04:34:41

您正在覆盖变换 peropty。 Merge 转换:Translatex(-50%)变换:translatey(-10px); by do:transform:transform:transforate:-50%,-10px);

执行此操作:

.div {
  transform: translateX(-50%);
}
.fade-in {
  animation-name: fade-in;
  animation-duration: .2s;
}
.fade-out {
  animation-name: fade-out;
  animation-duration: .2s;
}
@keyframes fade-out {
  0% {
    opacity: 100%;
  }
  
  100% {
    opacity: 0%;
    transform: translate(-50%, -10px); /* NEW */
  }
}
@keyframes fade-in {
  0% {
    opacity: 50%;
    transform: translate(-50%, -10px); /* NEW */
  }
  
  100% {
    opacity: 100%;
  }
}

You are overriding the transform peropty. Merge transform: translateX(-50%) and transform: translateY(-10px); by doing: transform: translate(-50%, -10px);

Do this:

.div {
  transform: translateX(-50%);
}
.fade-in {
  animation-name: fade-in;
  animation-duration: .2s;
}
.fade-out {
  animation-name: fade-out;
  animation-duration: .2s;
}
@keyframes fade-out {
  0% {
    opacity: 100%;
  }
  
  100% {
    opacity: 0%;
    transform: translate(-50%, -10px); /* NEW */
  }
}
@keyframes fade-in {
  0% {
    opacity: 50%;
    transform: translate(-50%, -10px); /* NEW */
  }
  
  100% {
    opacity: 100%;
  }
}

甜心 2025-02-16 04:34:41

您覆盖整个transform属性 - 不仅仅是翻译。如果要保留translatex值,则必须将其包含在动画中。

@keyframes fade-out {
    0% {
        opacity: 100%;
        transform: translateX(-50%);
    }
    100% {
        opacity: 0%;
        transform: translateY(-10px) translateX(-50%);
    }
}

You override whole transform attribute - not just translate. If you want to keep your translateX value you have to include it in animation too.

@keyframes fade-out {
    0% {
        opacity: 100%;
        transform: translateX(-50%);
    }
    100% {
        opacity: 0%;
        transform: translateY(-10px) translateX(-50%);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文