当前位置: 首页 > news >正文

js+css侧边导航菜单 可收缩

js+css侧边导航菜单 可收缩icon-default.png?t=N7T8https://www.bootstrapmb.com/item/14774

创建一个可收缩的侧边导航菜单需要使用JavaScript来处理交互,而CSS则用来设置样式和动画效果。以下是一个简单的示例,展示了如何创建一个可收缩的侧边导航菜单。

HTML 结构

 
html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>可收缩侧边导航菜单</title>
<link rel="stylesheet" href="styles.css">
</head>
<body><div id="sidebar" class="sidebar">
<ul>
<li><a href="#">链接 1</a></li>
<li><a href="#">链接 2</a></li>
<li><a href="#">链接 3</a></li>
<!-- ...更多链接 -->
</ul>
<span id="toggle-btn" class="toggle-btn">☰</span>
</div><div id="content" class="content">
<!-- 页面内容 -->
<p>点击左上角的菜单图标来显示/隐藏侧边栏。</p>
</div><script src="script.js"></script>
</body>
</html>

CSS 样式 (styles.css)

 
cssbody {
margin: 0;
padding: 0;
overflow-x: hidden; /* 防止内容在侧边栏展开时水平滚动 */
}.sidebar {
width: 200px; /* 侧边栏宽度 */
height: 100vh; /* 视口高度 */
background: #333;
color: #fff;
position: fixed;
top: 0;
left: -200px; /* 初始位置在屏幕左侧外部 */
transition: left 0.3s ease-in-out; /* 平滑过渡效果 */
z-index: 1000; /* 确保侧边栏在内容之上 */
}.sidebar ul {
list-style: none;
padding: 0;
margin: 0;
}.sidebar li a {
display: block;
padding: 15px;
text-decoration: none;
color: inherit;
}.sidebar li a:hover {
background: #444;
}.toggle-btn {
position: absolute;
top: 10px;
left: 10px;
font-size: 24px;
color: #fff;
cursor: pointer;
}.content {
padding: 20px;
margin-left: 200px; /* 与侧边栏宽度相同,确保内容不会重叠 */
transition: margin-left 0.3s ease-in-out; /* 平滑过渡效果 */
}.sidebar.active {
left: 0; /* 侧边栏展开时移动到屏幕左侧 */
}.content.active {
margin-left: 200px; /* 侧边栏展开时内容区域的左边距增加 */
}

JavaScript 交互 (script.js)

 
javascriptdocument.getElementById('toggle-btn').addEventListener('click', function() {
const sidebar = document.getElementById('sidebar');
const content = document.getElementById('content');sidebar.classList.toggle('active');
content.classList.toggle('active');
});

以上示例创建了一个简单的可收缩侧边导航菜单。侧边栏初始时位于屏幕左侧外部,并可通过点击左上角的菜单图标来展开和隐藏。页面内容也会根据侧边栏的展开或隐藏状态相应地调整其左边距。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【数据结构】排序算法——Lesson2
  • 树莓派自制智能语音助手之语音唤醒
  • 《人生苦短,我用python·十一》python网络爬虫的简单使用
  • 基于Hutool实现自定义模板引擎,实现json个性化模板引擎转换
  • 机器学习 | 回归算法原理——最小二乘法
  • SQL labs-SQL注入(三)
  • 离散型以及连续型随机变量
  • 【JVM基础05】——组成-能不能解释一下方法区?
  • 手机如何播放电脑的声音?
  • Django 简介
  • Unity UGUI 之 Slider
  • .NET开源、简单、实用的数据库文档生成工具
  • Windows 11+Visual Studio 2022 环境OpenCV+CUDA 12.5安装及踩坑笔记
  • 23种设计模式【结构型模式】详细介绍之【组合模式】
  • 【分布式锁】Redission实现分布式锁
  • co模块的前端实现
  • FastReport在线报表设计器工作原理
  • Linux CTF 逆向入门
  • Vim Clutch | 面向脚踏板编程……
  • vue-cli在webpack的配置文件探究
  • XML已死 ?
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 给初学者:JavaScript 中数组操作注意点
  • 基于游标的分页接口实现
  • 简单实现一个textarea自适应高度
  • 解析带emoji和链接的聊天系统消息
  • 入门级的git使用指北
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 赢得Docker挑战最佳实践
  • raise 与 raise ... from 的区别
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​虚拟化系列介绍(十)
  • # Kafka_深入探秘者(2):kafka 生产者
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1) caustics\
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (剑指Offer)面试题34:丑数
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一) 初入MySQL 【认识和部署】
  • (一)基于IDEA的JAVA基础1
  • (转)关于pipe()的详细解析
  • (转载)(官方)UE4--图像编程----着色器开发
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ****三次握手和四次挥手
  • ./configure,make,make install的作用
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Core 2.1路线图
  • .NET IoC 容器(三)Autofac
  • .net(C#)中String.Format如何使用