如何在 css 中制作过渡椭圆

how to make transition ellipse in css

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

这是 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;
}

我的问题是如何让侧边栏的过渡先变成椭圆再显示全宽。之前谢谢

这是插图:

仅靠简单的过渡效果是无法实现的。您将需要使用 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>

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