css+js实现垂直透明伸缩滑动菜单导航条效果代码

代码语言:html

所属分类:菜单导航

代码描述:css+js实现垂直透明伸缩滑动菜单导航条效果代码

代码标签: css js 垂直 透明 伸缩 滑动 菜单 导航条

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
   
<head>
       
<meta charset="UTF-8">
   
<style>
       
:root {
 
--bg-one: #090909;
 
--bg-two: #424242;
 
--sidebar: #070707;
 
--selected: #85fcff;
 
--text-deselected: #c0c0c0;
 
--text-selected: #ffffff;
}

* {
 
box-sizing: border-box;
 
border: 0;
 
margin: 0;
}

html
{
 
background: url("//repo.bfw.wiki/bfwrepo/image/607e4ca28879b.png") no-repeat center
    center fixed
;
 
-webkit-background-size: cover;
 
-moz-background-size: cover;
 
-o-background-size: cover;
 
background-size: cover;
}

body
{
 
display: flex;
 
justify-content: center;
 
align-items: center;
 
width: 100vw;
 
height: 100vh;
 
overflow: hidden;
}

.sidebar {
 
position: relative;
 
width: var(--sidebar-width);
 
height: 55rem;
 
border-radius: 10px;
 
transition: width 0.5s ease-in-out;
}

.sidebar::before {
 
content: "";
 
position: absolute;
 
width: var(--sidebar-width);
 
height: 55rem;
 
background-color: rgb(0 0 0 / 70%);
 
border-radius: 10px;
 
box-shadow: inset 0 0 0.2rem 0.1rem rgb(154 154 154 / 90%),
   
0 0 0.1rem 0.1rem rgb(0 0 0 / 70%);
 
opacity: 0.3;
}

.side-border {
 
position: absolute;
 
width: 0.2rem;
 
background-color: var(--selected);
 
height: 100%;
 
border-radius: 10px;
}

.open-anchor,
.close-anchor {
 
position: absolute;
 
width: 1.5rem;
 
height: 1.5rem;
 
border-radius: 50%;
 
background-color: var(--selected);
 
top: 13.7rem;
 
left: -0.65rem;
 
cursor: pointer;
}

.open-anchor::after {
 
content: "";
 
position: absolute;
 
border-top: 0.4rem solid transparent;
 
border-bottom: 0.4rem solid transparent;
 
border-left: 0.5rem solid var(--bg-two);
 
left: 0.55rem;
 
top: 0.35rem;
}

.close-anchor::after {
 
content: "";
 
position: absolute;
 
border-top: 0.4rem solid transparent;
 
border-bottom: 0.4rem solid transparent;
 
border-right: 0.5rem solid var(--bg-two);
 
left: 0.45rem;
 
top: 0.35rem;
}

.expand-sidebar {
 
position: absolute;
 
width: 2rem;
 
height: 100%;
 
left: calc(var(--sidebar-width) - 0.4rem);
 
z-index: 2;
 
opacity: 0;
 
transition: opacity 0.2s ease-in-out;
}

.expand-sidebar:hover {
 
opacity: 1;
}

aside
{
 
position: absolute;
 
width: 100%;
 
height: 100%;
 
overflow: hidden;
 
border-radius: 10px;
}

nav
{
 
position: absolute;
 
height: 100%;
 
width: 100%;
 
display: flex;
 
flex-direction: column;
 
overflow: hidden;
 
z-index: 1;
}

ul
{
 
position: relative;
 
padding: 0;
 
list-style-type: none;
}

li
{
 
height: 3.5rem;
}

button
,
.deselected-button {
 
width: 100%;
 
height: 3.5rem;
 
background-color: transparent;
 
outline: none;
 
cursor: pointer;
}

button:hover div > span,
.selected-text {
 
color: var(--text-selected);
 
opacity: 1;
}

button:hover div > svg {
 
stroke: var(--text-selected) !important;
 
opacity: 1 !important;
 
fill: var(--text-selected);
}

button
> div {
 
position: relative;
 
display: flex;
 
align-items: center;
 
justify-content: flex-start;
 
height: 100%;
 
padding: 0rem 0rem 0rem 1.25rem;
}

svg
{
 
/* display: none; */
 
width: 2rem;
 
fill: white;
 
stroke: white;
 
width: 2.7rem;
 
opacity: 0.5;
 
transform-origin: center;
}

ul
{
 
display: flex;
 
flex-direction: column;
 
background-color: transparent;
}

ul:nth-child(2) {
 
margin: 2.7rem 0;
}

ul:nth-child(2)::after {
 
position: absolute;
 
content: "";
 
width: calc(var(--sidebar-width) / 1.2);
 
height: 0.1rem;
 
background-color: var(--bg-two);
 
top: 8.3rem;
 
left: calc(var(--sidebar-width) / 14);
 
opacity: 0.7;
 
transition: width 0.1s ease-in-out;
}

ul:nth-child(4) {
 
margin-top: auto;
 
overflow: hidden;
 
margin-bottom: 0.5rem;
}

span
,
.deselected-text {
 
color: var(--text-deselected);
 
font-size: 1.2rem;
 
opacity: 0.6;
}

.indicator {
 
position: absolute;
 
width: 0.5rem;
 
height: 3.5rem;
 
background-color: var(--selected);
 
box-shadow: 0 0 0.2rem 0.2rem rgba(0, 0, 0, 0.1),
   
0.5rem 0 1.5rem 0.01rem var(--selected);
 
left: -0.65rem;
 
top: 9.5rem;
 
border-radius: 0.3rem 0.25rem 0.25rem 0.3rem;
 
transition: top 0.3s ease-in-out;
}

button div
{
 
pointer-events: none;
}

.badge {
 
position: absolute;
 
display: flex;
 
align-items: center;
 
justify-content: center;
 
width: 1.8rem;
 
height: 1.5rem;
 
border-radius: 1.5rem;
 
background-color: red;
 
color: white;
 
font-size: 0.9rem;
 
left: 14rem;
}

.badge-attached {
 
transform: scale(0.7);
 
left: 2rem;
 
top: 0.1rem;
}

.header {
 
display: flex;
 
align-items: center;
 
height: 3.5rem;
 
width: 100%;
}

.name {
 
position: absolute;
 
display: flex;
 
flex-direction: column;
 
justify-content: space-between;
 
font-family: Arial, Helvetica, sans-serif;
 
padding: 1rem;
 
left: 3.5rem;
 
top: 0.4rem;
}

.name > span:nth-child(1) {
 
font-weight: bold;
 
font-size: 1.2rem;
 
color: var(--text-selected);
}

.name > span:nth-child(2) {
 
font-size: 0.95rem;
 
color: var(--text-selected);
}

.name::before {
 
content: "S";
 
position: absolute;
 
width: 2.5rem;
 
height: 2.5rem;
 
border-radius: 0.5rem;
 
background-color: var(--text-deselected);
 
left: -2.3rem;
 
display: flex;
 
justify-content: center;
 
align-items: center;
 
font-size: 2.5rem;
 
font-weight: bold;
}

@keyframes move-svg {
 
0% {
   
transform: rotate(10deg);
 
}
 
50% {
   
transform: rotate(20);
 
}
 
75% {
   
transform: rotate(-10deg);
 
}
}
   
</style>
   
</head>
   
<body>
     
           
               
<div class='sidebar' open='true'>
                   
<div class='indicator'></div>
                   
<div class='expand-sidebar'>
                       
<div class='side-border'></div>
                       
<div class='close-anchor'></div>
                   
</div>
                   
<aside>
                       
<nav>
                           
<div class='header'>
                               
<div class='name'>
                                   
<span>Sæbä</span>
                                   
<span>Workspace</span>
                               
</div>
                           
</div>
                           
<ul>
                               
<li>
                                   
<button>
                                       
<div id='1'>
                                           
<svg>
                                               
<use href='#activity'></use>
                                           
</svg>
                                           
<span>Activity</span>
                                       
</div>
                                   
</button>
                               
</li>
                               
<li>
                                   
<button>
                                       
<div id='2'>
                                           
<svg>
                                               
<use href='#tasks'></use>
                                           
</svg>
                                           
<span>My Tasks</span>
                                           
<div class='badge'>23</div>
                                       
</div>
                                   
</button>
                               
</li>
                           
</ul>
                           
<ul>
                               
<li>
                                   
<button>
                                       
<div id='3'>
                                           
<svg>
                                               
<use href='#overview'></use>
                                           
</svg>
                                           
<span>Overview</span>
                                       
</div>
                                   
</button>
                               
</li>
                               
<li>
                                   
<button>
                                       
<div id='4'>
                                           
<svg>
                                               
<use href='#projects'></use>
                                           
</svg>
                                           
<span>Projects</span>
                                       
</div>
                                   
</button>
                               
</li>
                               
<li>
                                   
<button>
                                       
<div id='5'>
                                           
<svg>
                                               
<use href='#calendar'></use>
                                           
</svg>
                                           
<span>Calendar</span>
                                       
</div>
                                   
</button>
                               
</li>
                               
<li>
                                   
<button>
                                       
<div id='6'>
                                           
<svg>
                                               
<use href='#campaign'></use>
                                           
</svg>
                                           
<span>Campaign</span>
                                       
</div>
                                   
</button>
                               
</li>
                               
<li>
                                   
<button>
                                        .........完整代码请登录后点击上方下载按钮下载查看

网友评论0