Vue实现响应式导航菜单:桌面端导航栏 + 移动端抽屉式菜单

在现代Web开发中,为了提升用户体验,响应式设计已成为必备技能。本文将通过Vue.js,创建一个响应式导航菜单,桌面端显示顶部导航栏,移动端则切换为抽屉式菜单,并具备点击遮罩关闭的功能。以下是具体实现步骤。


项目需求分析

我们希望实现以下功能: 1. 桌面端宽屏(大于 768px):顶部导航菜单,水平布局,导航栏固定在页面顶部。 2. 移动端窄屏(小于或等于 768px):隐藏顶部导航栏,显示抽屉式菜单,点击遮罩层或关闭按钮可关闭抽屉。 3. 响应式设计:根据屏幕宽度自动切换布局,实时监听窗口大小变化。


实现步骤

1. 创建 Vue 项目并初始化布局

首先,初始化 Vue 项目。以下是 HTML 模板的基础结构,包含桌面端和移动端的两种菜单形式:

<template>
  <div id="app">
    <!-- 顶部导航栏(仅桌面端显示) -->
    <header>
      <nav class="top-nav" v-if="!isMobile">
        <ul class="menu-list">
          <li v-for="(item, index) in menuItems" :key="index">
            <a href="#">{
  
  { item.title }}</a>
          </li>
        </ul>
      </nav>

      <!-- 菜单按钮(仅移动端显示) -->
      <button v-if="isMobile" class="menu-button" @click="toggleDrawer">☰</button>
    </header>

    <!-- 抽屉式菜单 -->
    <div class="drawer" :class="{ open: isDrawerOpen }">
      <div class="drawer-header">
        <span class="logo">导航菜单</span>
        <button class="close-button" @click="toggleDrawer">×</button>
      </div>
      <ul class="menu-list">
        <li v-for="(item, index) in menuItems" :key="index">
          <a href="#">{
  
  { item.title }}</a>
        </li>
      </ul>
    </div>

    <!-- 抽屉遮罩层 -->
    <div v-if="isMobile && isDrawerOpen" class="overlay" @click="closeDrawer"></div>
  </div>
</template>

如果有二级菜单需要去做一些优化修改,使用css鼠标hover显示子级菜单或者通过js控制子级菜单展开折叠,以下是一个vue模版:

<template>
  <div id="app">
    <!-- 菜单按钮 -->
    <button class="menu-button" @click="toggleDrawer">☰</button>

    <!-- 抽屉菜单 -->
    <div class="drawer" :class="{ open: isDrawerOpen }"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值