【发布时间】:2017-02-23 18:31:23
【问题描述】:
问题
我想用css动画制作 ::before 动画,但它一直失败。通常,动画完成后会保存动画的状态(如果我将其设置为转发)。然而,这一次没有。任何想法为什么它不起作用?
由于某种原因,它也有问题......我希望它是一个自上而下的三角形,让它折叠然后成为一个自下而上的三角形,所以是这样的:
应该发生什么
开始: ▴
50%的动画:──
结束: ▾
它应该是什么样子的绘图(将白色更改为橙色以使图像中的差异可见)
我的代码
我的动画(完整代码参见 jsfiddle)
@-webkit-keyframes animateEnvelope {
0% {border-width: 0px 400px 200px 400px;}
2% {border-color: transparent transparent #999 transparent;}
50% {border-width: 200px 400px 100px 400px;}
52% {border-color: transparent transparent #999 transparent}
99% {border-color: #ECF0F1 transparent transparent transparent;}
}
@keyframes animateEnvelope {
0% {border-width: 0px 400px 200px 400px;}
2% {border-color: transparent transparent #999 transparent;}
50% {border-width: 200px 400px 100px 400px;}
52% {border-color: transparent transparent #999 transparent}
99% {border-color: #ECF0F1 transparent transparent transparent;}
}
我尝试搜索 SO 和 Google,但没有任何结果适合我。你们是我最后的希望
【问题讨论】:
-
你的意思是像this这样的东西吗?
-
@Harry 不知何故.. 你看到灰色三角形塌陷了吗?底部(也是白色三角形最宽的部分)应该与底座顶部对齐,我会画一个图让你更好地理解。
-
@Harry 添加了一张图来更好地解释我想要实现的目标
-
.base是否总是固定宽度?如果不是,那么你不应该使用border来生成这个三角形。 -
@Harry 是的,它始终具有固定宽度。由于我对形状没有太多经验,所以我选择了边框。有什么想法我应该改用什么?
标签: css css-selectors border css-animations