当前位置:首页 > JavaScript

js实现菜单折叠

2026-01-30 14:38:50JavaScript

使用CSS和JavaScript实现菜单折叠

通过CSS隐藏菜单,再通过JavaScript切换显示状态。这种方法简单直接,适合基础需求。

<style>
  .menu { display: none; }
  .menu.active { display: block; }
</style>

<button id="toggleBtn">切换菜单</button>
<ul class="menu" id="menu">
  <li>项目1</li>
  <li>项目2</li>
</ul>

<script>
  const toggleBtn = document.getElementById('toggleBtn');
  const menu = document.getElementById('menu');

  toggleBtn.addEventListener('click', () => {
    menu.classList.toggle('active');
  });
</script>

添加过渡动画效果

为菜单折叠添加平滑的动画过渡,提升用户体验。使用CSS transition属性实现。

<style>
  .menu {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease-out;
  }
  .menu.active {
    max-height: 500px;
  }
</style>

使用jQuery实现

如果项目中已引入jQuery,可以使用更简洁的语法实现菜单折叠功能。

$('#toggleBtn').click(function() {
  $('#menu').slideToggle();
});

响应式设计实现

结合媒体查询,在不同屏幕尺寸下自动控制菜单的折叠状态。

@media (max-width: 768px) {
  .menu { display: none; }
  .menu.active { display: block; }
}

使用Vue.js实现

在Vue.js框架中,可以利用v-show指令轻松实现菜单折叠功能。

<template>
  <div>
    <button @click="toggleMenu">切换菜单</button>
    <ul v-show="isMenuVisible">
      <li>项目1</li>
      <li>项目2</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isMenuVisible: false
    }
  },
  methods: {
    toggleMenu() {
      this.isMenuVisible = !this.isMenuVisible;
    }
  }
}
</script>

使用React实现

在React组件中,通过状态管理控制菜单的显示与隐藏。

import React, { useState } from 'react';

function Menu() {
  const [isVisible, setIsVisible] = useState(false);

  return (
    <div>
      <button onClick={() => setIsVisible(!isVisible)}>
        切换菜单
      </button>
      {isVisible && (
        <ul>
          <li>项目1</li>
          <li>项目2</li>
        </ul>
      )}
    </div>
  );
}

保存菜单状态到本地存储

将菜单的折叠状态保存到localStorage,保持用户偏好。

// 保存状态
localStorage.setItem('menuCollapsed', 'true');

// 读取状态
const isCollapsed = localStorage.getItem('menuCollapsed') === 'true';

可访问性优化

为菜单添加ARIA属性,提升屏幕阅读器的兼容性。

js实现菜单折叠

<button 
  id="toggleBtn" 
  aria-expanded="false" 
  aria-controls="menu"
>
  切换菜单
</button>

<script>
  toggleBtn.addEventListener('click', () => {
    const expanded = menu.classList.toggle('active');
    toggleBtn.setAttribute('aria-expanded', expanded);
  });
</script>

标签: 菜单js
分享给朋友:

相关文章

css制作tab菜单

css制作tab菜单

CSS制作Tab菜单的方法 HTML结构 使用无序列表和div容器构建基础结构,列表项为标签页标题,div内放置对应内容块。 <ul class="tab-menu"> <li…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

vue菜单tab实现

vue菜单tab实现

Vue 菜单 Tab 实现方法 使用动态组件切换内容 通过 Vue 的 component 动态组件结合 v-for 渲染菜单项,点击时切换显示内容: <template> <…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…