我正在设计一个垂直的下拉标题,单击时可以打开和关闭(使用输入检查类型),并且我无法使该打开动画反转为关闭动画,因为关闭动画只是缩放技巧,与开幕动画。

这是我的项目:https://codepen.io/anon/pen/xLmbXd?editors=1100

我想将此结束缩放动画更改为实际动画:

@keyframes hideAnimation {
  0% {
    -moz-transform: scaleY(0.5);
    -ms-transform: scaleY(0.5);
    -webkit-transform: scaleY(0.5);
    transform: scaleY(0.5);
  }
  60% {
    -moz-transform: scaleY(0.25);
    -ms-transform: scaleY(0.25);
    -webkit-transform: scaleY(0.25);
    transform: scaleY(0.25);
  }
  80% {
    -moz-transform: scaleY(0);
    -ms-transform: scaleY(0);
    -webkit-transform: scaleY(0);
    transform: scaleY(0);
  }
  100% {
    -moz-transform: scaleY(0);
    -ms-transform: scaleY(0);
    -webkit-transform: scaleY(0);
    transform: scaleY(0);
  }
}


感谢所有帮助!

最佳答案

问题是max-height会根据您的9999px高度进行动画处理(并进出),因此达到该距离的速度确实非常快。相反,您需要使用实际高度或在笔的第49行上设置max-height: 165px

您也可以简化CSS到此。



.dropdown {position: relative;}
.dropdown > .dropdown-menu {
  max-height: 0;
  overflow: hidden;
  list-style: none;
  padding: 0;
  margin: 0;
  transform: scaleY(0);
  transform-origin: 50% 0%;
  transition: transform 0s ease-out 0.6s,max-height 0.6s ease-out;
}

.dropdown > .dropdown-menu li a {
  display: block;
  color: #6f6f6f;
  background: #EEE;
  box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset;
  text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3);
  padding: 10px 10px;
}
.dropdown > .dropdown-menu li a:hover {
  background: #f6f6f6;
}
.dropdown > input[type="checkbox"] {
  opacity: 0;
  display: block;
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
}
.dropdown > input[type="checkbox"]:checked ~ .dropdown-menu {
  max-height: 160px;
  display: block;
  transform: scaleY(1);
  transition: transform 0.6s ease-out,max-height 0.6s ease-out;
}

<div class="container">
  <h1 class="title">Dropdown Menu</h1>
  <ul>
    <li class="dropdown">
      <input type="checkbox" />
      <a href="#" data-toggle="dropdown">First Menu</a>
      <ul class="dropdown-menu">
        <li><a href="#">Home</a></li>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </li>
    <li class="dropdown">
      <input type="checkbox" />
      <a href="#" data-toggle="dropdown">Second Menu</a>
      <ul class="dropdown-menu">
        <li><a href="#">Home</a></li>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </li>
    <li class="dropdown">
      <input type="checkbox" />
      <a href="#" data-toggle="dropdown">Third Menu</a>
      <ul class="dropdown-menu">
        <li><a href="#">Home</a></li>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </li>
  </ul>
</div>

关于html - 如何反转CSS3垂直下拉动画?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45964534/

10-12 17:14
查看更多