爬行的蜗牛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: golang Linux PHP
查看: 34|回复: 0

HTML+CSS实现隐藏式侧边栏菜单!!附源码!!

[复制链接]

94

主题

36

回帖

849

积分

管理员

积分
849
发表于 7 天前 | 显示全部楼层 |阅读模式
效果展示:


640.gif


完整源码:


  1. <!DOCTYPE html>
  2. <html>

  3. <head>
  4.     <meta http-equiv="content-type" content="text/html; charset=utf-8">
  5.     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

  6.     <title>隐藏式侧边栏菜单</title>
  7.     <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  8.     <style>
  9.         *{
  10.     /* 初始化 */
  11.     margin: 0;
  12.     padding: 0;
  13. }
  14. body{
  15.     /* 100%窗口高度 */
  16.     height: 100vh;
  17.     background-color: rgb(138, 130, 137);
  18. }
  19. .container{
  20.     width: 30px;/* 设置左边显示(鼠标为选中时状态的宽度)*/
  21.     height: 600px;/* 设置左边显示(鼠标为选中时状态的高度)*/
  22.     /* 绝对固定定位 */
  23.     position: fixed;
  24.     left: 0px;
  25.     /* 垂直居中 */
  26.     top: 20%;
  27.     /* transform: translateY(-50%); */
  28.     background-color: #222;
  29.     /* 右上右下圆角 */
  30.     border-radius: 0 15px 15px 0;
  31.     overflow: hidden;/* 溢出隐藏 */
  32.     /* 动画过渡 */
  33.     transition: 0.3s;
  34. }
  35. .container:hover{
  36.     /* 鼠标移入,展开+改变圆角大小 */
  37.     width: 130px;
  38.     border-radius: 0 50px 50px 0;
  39. }
  40. .container:hover li a{
  41.     /* 鼠标移入,改变字体颜色 */
  42.     color: rgb(255, 255, 255);
  43. }
  44. /* 添加左侧橙色条状 */
  45. .container::before{
  46.     content: "";
  47.     width: 50%;/*鼠标悬停时显示左侧橙色条宽度*/
  48.     height: 100%;/*鼠标悬停时显示左侧橙色条高度*/
  49.     position: absolute;/*绝对定位*/
  50.     top: 0px;
  51.     left: 0px;
  52.     z-index: -1;/* 将z轴设置为-1不让其遮挡图标*/
  53.     background-color: rgb(255, 136, 0);
  54. }
  55. /* 设置上方快 */
  56. .container .top{
  57.     width: calc(100% - 30px);/* 动态设置宽度:宽度比100%的宽度少30px。*/
  58.     margin-left: 30px;/*左外间距设为30px与上面的.container{}中的width一致*/
  59.     height: 20%;/*鼠标悬停时从20%开始计算(也就是第一个块)*/
  60.     background-color: #222;/*设置跟着块的上方的块颜色*/
  61.     border-radius: 0 0 0 20px;/*设置上方的黑块的左下角的弧度*/
  62.     /* 动画过渡 */
  63.     transition: 0.2s;
  64. }
  65. /* 这只中间快 */
  66. .container .middle{
  67.     width: calc(100% - 60px);
  68.     height: 10%;/*每次鼠标悬停时选中的部分为10%(也就是一个橙色的块)*/
  69.     background-color: rgb(255, 136, 0);/*设置中间选择时的快的背景色*/
  70.     margin-left: 30px;/*左外间距设为30px与上面的.container{}中的width一致*/
  71.     border-radius: 20px;/*设置边角弧度*/
  72. }
  73. /* 设置下方块 原理上上方快一样*/
  74. .container .bottom{
  75.     width: calc(100% - 30px);
  76.     height: 100%;
  77.     margin-left: 30px;
  78.     background-color: #222;
  79.     border-radius: 20px 0 0 0;
  80. }
  81. .container li{
  82.     /* 绝对定位 */
  83.     position: absolute;
  84.     /* 通过var函数调用自定义属性--lqj */
  85.     top: var(--lqj);
  86.     width: 100%;
  87.     height: 10%;
  88.     font-size: 30px;
  89.     /* 弹性布局 水平垂直居中 */
  90.     display: flex;
  91.     justify-content: center;
  92.     align-items: center;
  93. }
  94. .container li a{
  95.     /* 字体颜色透明 */
  96.     color: transparent;
  97.     /* 动画过渡 */
  98.     transition: 0.3s;
  99. }
  100. /* 分别为每一个li元素设置.top的高度 */
  101. /* ~是兄弟选择器 */
  102. .container li:nth-child(1):hover ~ .top{
  103.     height: 20%;
  104. }
  105. .container li:nth-child(2):hover ~ .top{
  106.     height: 30%;
  107. }
  108. .container li:nth-child(3):hover ~ .top{
  109.     height: 40%;
  110. }
  111. .container li:nth-child(4):hover ~ .top{
  112.     height: 50%;
  113. }
  114. .container li:nth-child(5):hover ~ .top{
  115.     height: 60%;
  116. }
  117. .container li:nth-child(6):hover ~ .top{
  118.     height: 70%;
  119. }
  120. </style>
  121. </head>

  122. <body>
  123.     <div class="container">
  124.         <!-- --lqj是自定义属性,通过var函数可调用 -->
  125.         <li style="--lqj:20%;">
  126.             <a href="#">
  127.                 <i class="fa fa-home" aria-hidden="false"></i>
  128.             </a>
  129.         </li>
  130.         <li style="--lqj:30%;">
  131.             <a href="#">
  132.                 <i class="fa fa-th-large" aria-hidden="true"></i>
  133.             </a>
  134.         </li>
  135.         <li style="--lqj:40%;">
  136.             <a href="#">
  137.                 <i class="fa fa-shopping-bag" aria-hidden="true"></i>
  138.             </a>
  139.         </li>
  140.         <li style="--lqj:50%;">
  141.             <a href="#">
  142.                 <i class="fa fa-user" aria-hidden="true"></i>
  143.             </a>
  144.         </li>
  145.         <li style="--lqj:60%;">
  146.             <a href="#">
  147.                 <i class="fa fa-cog" aria-hidden="true"></i>
  148.             </a>
  149.         </li>
  150.         <li style="--lqj:70%;">
  151.             <a href="#">
  152.                 <i class="fa fa-sign-out" aria-hidden="true"></i>
  153.             </a>
  154.         </li>
  155.         <div class="top"></div>
  156.         <div class="middle"></div>
  157.         <div class="bottom"></div>
  158.     </div>
  159. </body>

  160. </html>
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表