如何在css中制作过渡椭圆

时间:2017-02-23 06:33:36

标签: html css css3 css-transitions css-shapes

所以,我有侧边栏只显示它的一些内容,当它悬停时它会显示所有侧边栏宽度。

这是CSS代码:

.sidenav {
    height: 100%;
    width: 100px;
    position: fixed; 
    z-index: 2;
    top: 0;
    left: 0;
    background-color: #fff;
    overflow: hidden; 
    padding-top: 20px;
    transition: 0.8s;
    -webkit-transition: 0.8s;
    opacity: 0.8;
    box-shadow: 0px 20px 50px black; 
} 
.sidenav:hover{
    width: 215px;
    transition: 0.8s;
    -webkit-transition: 0.8s;
    overflow: hidden;
}

我的问题是如何使我的侧边栏的过渡首先变为椭圆,然后显示全宽。

之前谢谢

这是插图: the initial state final state what I mean state

1 个答案:

答案 0 :(得分:1)

只有简单的过渡效果才能实现这一点。您将需要使用CSS keyframe animations仅在宽度过渡上获得边框半径:



.sidenav {
  height: 100%;
  width: 100px;
  position: fixed;
  z-index: 2;
  top: 0;
  left: 0;
  background-color: #fff;
  overflow: hidden;
  padding-top: 20px;
  transition: 0.8s;
  opacity: 0.8;
  box-shadow: 0px 20px 50px black;
  border-radius: 0;
  background: black;
}

.sidenav:hover {
  width: 215px;
  overflow: hidden;
  animation-name: roundborder;
  animation-duration: 1s;
  animation-iteration-count: 1;
}

@keyframes roundborder {
    0%   { border-radius: 0; }
    50%  { border-radius: 0 50% 50% 0; }
    100% { border-radius: 0; }
}

<div class="sidenav"></div>
&#13;
&#13;
&#13;

当然,您需要适当的供应商前缀才能获得较旧的浏览器支持。有关详细信息,请参阅border-radius on MDN