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

js+css侧边导航菜单 可收缩https://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)

复制代码
复制代码
css`body {
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)

复制代码
复制代码
javascript`document.getElementById('toggle-btn').addEventListener('click', function() {
const sidebar = document.getElementById('sidebar');
const content = document.getElementById('content');

sidebar.classList.toggle('active');
content.classList.toggle('active');
});`

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

相关推荐
VT.馒头9 分钟前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
萧鼎13 分钟前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
css趣多多20 分钟前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
-凌凌漆-28 分钟前
【vue】pinia中的值使用 v-model绑定出现[object Object]
javascript·vue.js·ecmascript
Anastasiozzzz42 分钟前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步1 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机1 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经1 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
R_.L1 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
Zach_yuan1 小时前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络