我正在尝试创建一个子菜单动画,让它从它的父菜单后面放入,就像它在铰链上一样。我希望它稍微超过它的最终静止位置,然后再回来。根据我对cubic-bezier()
功能符号的理解,这应该是可能的。我不确定这是一个错误还是只是我的误解,但我似乎无法让它工作。我删除了所有供应商前缀(它们在演示中),但这是我正在使用的代码:
HTML
<ul class="nav">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="about.html">About</a>
<ul>
<li>
<a href="about.html#company">Company</a>
</li>
<li>
<a href="about.html#team">Team</a>
</li>
</ul>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
CSS
ul {
background-color:#99f;
border-radius:10px;
list-style:none;
margin:0;
padding:0;
}
ul:after {
clear:both;
content:'';
display:block;
height:0;
margin:0;
padding:0;
width:100%;
}
.nav > li {
display:block;
float:left;
perspective:600px;
perspective-origin:100% 100%;
transition:background-color .2s .4s;
}
.nav li a {
color:#fff;
display:block;
padding:20px;
text-decoration:none;
}
.nav li ul {
background-color:#bbf;
border-radius:0 0 10px 10px;
position:absolute;
transform:rotateX(-90deg);
transform-origin:0 0 0;
transition:transform .4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.nav li:hover {
background-color:#bbf;
-webkit-transition-delay:0;
}
.nav li:hover ul {
transform:rotateX(0);
transition-delay:.2s;
}
.nav li li {
white-space:nowrap;
}
因此,根据这篇 MDN 文章中的信息,Y 轴上的值cubic-bezier()
可以大于 1,从而产生反弹效果。从理论上讲,这意味着cubic-bezier()
我正在使用的子菜单应该从 -90 度摆动到大约 15 度,然后回到 0 度。
不幸的是,我没有看到这种行为。我确实看到cubic-bezier()
影响动画的时间与根本不使用时间功能,但它没有提供我期望的反弹效果。
我打赌这与从 -90 度到 0 度及过去有关,但在这一点上我非常迷茫。到目前为止,我一直无法找到任何关于使用cubic-bezier()
带有函数的曲线rotateX()
来产生这种效果的文档,甚至找不到说明是否rotateX()
支持这种旋转或世界上正在发生什么的文档......帮助?