如何在 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。
所以,我的侧边栏只显示它的一些内容,当它悬停时它会显示所有侧边栏宽度。
这是 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。