CSS 实现伸缩导航仪表板侧边栏菜单

本文详细介绍了如何使用CSS和JavaScript创建一个可伸缩的导航侧边栏菜单,包括曲面圆角的实现、Ionicons图标的引入、菜单的显示与隐藏以及响应式设计。同时展示了菜单项的样式和切换效果的编写过程。
摘要由CSDN通过智能技术生成

CSS 实现伸缩导航仪表板侧边栏菜单

效果展示

  • 展开状态
    在这里插入图片描述

  • 收起状态
    在这里插入图片描述

CSS 知识点

  • 回顾曲面圆角的实现知识点

字体库准备

菜单的图标使用的是ionicons的图标库,所以需要页面需要引入对应的文件。

<script
  type="module"
  src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"
></script>
<script
  nomodule
  src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"
></script>

整体页面布局

菜单名称的隐藏,我们是通过控制菜单容器的宽度来实现的。

<div class="menuToggle"></div>
<div class="sidebar">
  <ul>
    <li class="logo" style="--bg:#333">
      <a href="#">
        <div class="icon">
          <ion-icon name="logo-apple"></ion-icon>
        </div>
        <div class="text">Website Logo</div>
      </a>
    </li>
    <div class="Menulist">
      <li style="--bg:#f44336" class="active">
        <a hred="#">
          <div class="icon">
            <ion-icon name="home-outline"></ion-icon>
          </div>
          <div class="text">Home</div>
        </a>
      </li>
      <li style="--bg:#ffa117">
        <a hred="#">
          <div class="icon">
            <ion-icon name="person-outline"></ion-icon>
          </div>
          <div class="text">Profile</div>
        </a>
      </li>
      <!-- 此处省略了其他菜单项 -->
    </div>
    <div class="bottom">
      <!-- 用户信息 -->
      <li style="--bg:#333">
        <a href="#">
          <div class="icon">
            <div class="imgBx">
              <img src="./user.jpg" />
            </div>
          </div>
          <div class="text">Muhammea Irshad</div>
        </a>
      </li>
      <!-- 退出按钮 -->
      <li style="--bg:#333">
        <a href="#">
          <div class="icon">
            <ion-icon name="log-out-outline"></ion-icon>
          </div>
          <div class="text">LogOut</div>
        </a>
      </li>
    </div>
  </ul>
</div>

实现整体页面样式

:root {
  --clr: #14161e;
}

body {
  min-height: 100vh;
  background: var(--clr);
}

.sidebar {
  position: absolute;
  width: 80px;
  height: 100vh;
  background: #fff;
  transition: 0.5s;
  padding-left: 10px;
  overflow: hidden;
}

编写菜单展开时的样式

首先我们现在页面中添加菜单激活的类,具体代码如下:

<div class="sidebar active">
  <!-- 省略内容代码 -->
</div>

然后编写菜单展开的样式

.sidebar.active {
  width: 300px;
}

.sidebar ul {
  position: relative;
  height: 100vh;
}

.sidebar ul li {
  position: relative;
  list-style: none;
}

.sidebar ul li.active {
  background: var(--clr);
  border-top-left-radius: 50px;
  border-bottom-left-radius: 50px;
}

.sidebar ul li.active::before {
  content: "";
  position: absolute;
  top: -20px;
  right: 0;
  width: 20px;
  height: 20px;
  border-bottom-right-radius: 20px;
  /* 使用 box-shadow 属性上曲面 */
  box-shadow: 5px 5px 0 5px var(--clr);
  background: transparent;
}

.sidebar ul li.active::after {
  content: "";
  position: absolute;
  bottom: -20px;
  right: 0;
  width: 20px;
  height: 20px;
  border-top-right-radius: 20px;
  /* 使用 box-shadow 属性下曲面 */
  box-shadow: 5px -5px 0 5px var(--clr);
  background: transparent;
}

代码实现后效果如下:

在这里插入图片描述

编写菜单导航项的样式

我这里先把用户的头像图片隐藏了,便于查看效果。

.sidebar ul li.logo {
  margin-bottom: 50px;
}

.sidebar ul li.logo .icon {
  font-size: 2em;
  counter-reset: var(--clr);
}

.sidebar ul li.logo .text {
  font-size: 1.2em;
  font-weight: 500;
  color: var(--clr);
}

.sidebar ul li a {
  position: relative;
  display: flex;
  white-space: nowrap;
  text-decoration: none;
}

.sidebar ul li a .icon {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  min-width: 60px;
  height: 70px;
  font-size: 1.5em;
  color: #333;
  transition: 0.5s;
  padding-left: 10px;
}

.sidebar ul li a .text {
  position: relative;
  height: 70px;
  display: flex;
  align-items: center;
  font-size: 1em;
  color: #333;
  padding-left: 15px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  transition: 0.5s;
}

.sidebar ul li.active a .icon {
  color: #fff;
}

.sidebar ul li.active a .text {
  color: var(--bg);
}

.sidebar ul li:hover a .icon,
.sidebar ul li:hover a .text {
  color: var(--bg);
  cursor: pointer;
}

.sidebar ul li.active a .icon::before {
  content: "";
  position: absolute;
  inset: 5px;
  width: 60px;
  height: 60px;
  background: var(--bg);
  border-radius: 50%;
  transition: 0.5s;
}

.sidebar ul li:hover.active a .icon::before {
  background: #fff;
}

最终效果如下:

在这里插入图片描述

编写用户信息和退出菜单的样式

.bottom {
  position: absolute;
  bottom: 0;
  width: 100%;
}

.imgBx {
  position: relative;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  overflow: hidden;
}

.imgBx img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

最终效果如下:
在这里插入图片描述

编写菜单收起和张开的按钮

.menuToggle {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 50px;
  height: 50px;
  background: #31a4ff;
  z-index: 1000;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}

.menuToggle::before {
  content: "";
  position: absolute;
  width: 30px;
  height: 3px;
  background: #fff;
  transform: translateY(-9px);
  transition: 0.5s;
  box-shadow: 0 9px 0 #fff;
}

.menuToggle::after {
  content: "";
  position: absolute;
  width: 30px;
  height: 3px;
  background: #fff;
  transform: translateY(9px);
  transition: 0.5s;
}

.menuToggle.active::before {
  transform: translateY(0) rotate(45deg);
  box-shadow: 0 0 0 #fff;
}

.menuToggle.active::after {
  transform: translateY(0) rotate(-45deg);
}

使用 JavaScript 编写菜单收起和展开效果

let menuToggle = document.querySelector(".menuToggle");
let sidebar = document.querySelector(".sidebar");

menuToggle.onclick = function () {
  menuToggle.classList.toggle("active");
  sidebar.classList.toggle("active");
};

let Menulist = document.querySelectorAll(".Menulist li");
function activeLink() {
  Menulist.forEach((item) => {
    item.classList.remove("active");
  });
  this.classList.add("active");
}
Menulist.forEach((item) => {
  item.addEventListener("click", activeLink);
});

完整代码下载

完整代码下载

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 车载测试中仪表中警告灯可通过以下步骤进行测试: 1. 打开车辆电源,但不要启动发动机。 2. 检查仪表板上的所有警告灯是否都点亮。如果没有点亮,可能是灯泡损坏或者电路故障。 3. 启动发动机,确认所有警告灯都熄灭。如果有任何一个灯仍然亮着,需要进一步检查和修理。 特别需要注意的是,某些警告灯可能只在特定的情况下才会点亮,例如低油量灯只有在油量低于某个阈值时才会亮灯。因此,在测试过程中,需要注意各种警告灯的功能和触发条件,以确保车辆的安全性能。 ### 回答2: 车载测试中,仪表中的警告灯是非常重要的指示灯,它能够及时地提醒驾驶者车辆是否存在问题。测试仪表中的警告灯主要包括以下几个步骤: 首先,将车辆带至一个安全的环境,确保车辆在停车状态下进行测试。 其次,启动车辆的电源系统,仪表板上的所有警告灯应该在启动过程中点亮并且随后熄灭。如果有警告灯一直点亮或无法熄灭,那么可能表示车辆存在问题。 然后,通过模拟车辆存在的不同问题来测试警告灯的准确性。例如,通过拔掉安全带来测试安全带指示灯,或者通过断开刹车踏板开关来测试刹车系统指示灯。 接下来,驾驶员可以进行一些操作来测试警告灯的反应。例如,通过调整转向灯开关来测试转向灯指示灯,或者通过踩油门测试发动机故障灯。 同时,还可以利用专业的车载诊断仪器来对警告灯进行测试。这些工具可以读取车辆的故障码,并提供问题的详细描述,帮助修理人员确定问题所在。 最后,测试过程中应该将测试结果记录下来,包括哪些警告灯点亮以及测试结果是否符合预期。如果有任何异常现象,应及时进行修理和维护。 总之,通过对车载仪表中的警告灯进行测试,能够确保驾驶者及时了解车辆的状况,并采取相应的措施,确保行车安全。 ### 回答3: 车载测试中,仪表中的警告灯测试主要是为了检测车辆系统是否正常工作,以确保驾驶者的安全。测试警告灯需要遵循以下步骤: 首先,启动车辆并点火。在车辆的电子系统开始运行之后,仪表板上的各种警告灯会自动点亮,这些警告灯代表着不同的车辆系统状况。 其次,检查每个警告灯的功能是否正常。例如,检查发动机故障灯、制动系统故障灯、胎压警告灯等。可以根据车辆的说明书或者相关技术资料,了解每个警告灯的意义和功能。 然后,观察警告灯是否正常点亮和熄灭。在车辆启动过程中,如果警告灯持续点亮,可能表示车辆某个系统存在问题。如果警告灯在正常启动运行后熄灭,表明车辆系统正常。如果警告灯在行驶过程中突然亮起,可能表示车辆系统出现了故障或问题,需要进行维修或排除故障。 最后,可能需要使用专业的车载测试设备来更详细地测试警告灯功能。这些设备可以提供更准确的数据和诊断结果,以确定车辆系统是否正常工作。 在测试过程中,需要注意安全。确保车辆停放在平稳的地方,并遵循相关的测试步骤和操作规范。如果对测试过程不了解或不确定,最好寻求专业技术人员的帮助。仪表中的警告灯测试是保证车辆安全性的重要环节,不能忽视。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值