【发布时间】:2020-11-13 00:39:40
【问题描述】:
我正在完成我的 webApp 并使其具有响应性。 我遇到了最后一个我似乎无法解决的问题!
我有一个动画,用于类似弹出框的元素,它在桌面上从Left 滑动到Right。
在移动设备上,没有足够的空间,所以我将在输入字段下方打开该元素,而不是在侧面,所以我需要一个从 Bottom 滑动到 Top 的动画。
这是我用于桌面屏幕的默认动画代码:
animations: [
trigger("slideInOut", [
transition(":enter", [
style({ transform: "translateX(60%)", opacity: 0 }),
animate(
"300ms ease-in",
style({ transform: "translateX(0%)", opacity: 1 })
),
]),
transition(":leave", [
animate(
"300ms ease-in",
style({ transform: "translateX(60%)", opacity: 0 })
),
]),
]),
]
而我唯一要更改的是transform 的 3 个值
对于移动设备,我需要:
translateY(60%)
translateY(0%)
translateY(60%)
所以基本上只需将 X 轴与 Y 轴交换即可!
我怎样才能做到这一点? 如果无法更改这些值,即使禁用移动动画也可以!
我想到了一个解决方案,但是很脏,很脏! 基本上我会创建一个我的“popover-like DIV”的副本,然后在他们两个上打一个类,例如:
.mobile
.desktop
然后,基于媒体查询,我会显示一个或另一个,最后在每一个上,我会附加一个不同的动画触发器,我会在我的组件中声明两个触发器,一个用于 Y 轴和一个用于 X 轴。 这应该可以,但我一点也不喜欢!
【问题讨论】:
-
这里需要使用 Angular 动画有什么特别的原因吗?像这样的简单事情可以在纯 css 中完成,Angular 只设置一些动态类。
-
不,当然没有,我不是动画专家,所以我用我在 Angular 中所知道的简单的方法!这个动画在 css 中的等价物是什么?