【问题标题】:how to make transition ellipse in css如何在css中制作过渡椭圆
【发布时间】:2017-07-13 12:19:30
【问题描述】:

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

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

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

这是插图:

【问题讨论】:

  • 在 JSfiddle 或 codepen 中发布您的完整代码

标签: html css css-transitions css-shapes


【解决方案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>

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

【讨论】:

  • 我的意思是当宽度从100px变为215px的过程中半径会发生变化,但是当已经215px时它会恢复正常
  • 好的,更新了我的答案。为此,您需要关键帧动画。
  • 嘿,我怎么让边框是凹的?有可能吗?
  • 有可能,看this post
猜你喜欢
  • 1970-01-01
  • 2015-01-13
  • 2021-08-31
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多