当前位置:首页 > 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,可以使用更简洁的语法实现菜单折叠功能。

js实现菜单折叠

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

响应式设计实现

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

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

使用Vue.js实现

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

js实现菜单折叠

<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
分享给朋友:

相关文章

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

vue实现下拉菜单

vue实现下拉菜单

实现下拉菜单的基本结构 使用 Vue 的 v-show 或 v-if 控制下拉菜单的显示与隐藏。通过点击按钮或父元素触发下拉状态切换。 <template> <div cl…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery菜单

jquery菜单

以下是关于使用jQuery创建交互式菜单的几种常见方法及实现示例: 基础下拉菜单实现 通过jQuery的slideToggle和toggleClass实现简单下拉效果: $('.menu-item…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div class…