当前位置:首页 > 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属性,提升屏幕阅读器的兼容性。

<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实现菜单折叠

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

相关文章

css制作菜单

css制作菜单

水平菜单制作 使用display: inline-block或flexbox布局创建水平菜单。设置list-style: none移除默认列表样式,添加padding和margin调整间距。 <…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的cur…