当前位置:首页 > VUE

vue实现菜单缩放

2026-01-17 16:44:38VUE

实现思路

通过 Vue 的响应式数据和 CSS 过渡效果,结合动态绑定 class 或 style 来实现菜单的缩放功能。核心是利用 v-bind:classv-bind:style 控制菜单宽度,并通过过渡动画平滑切换。

vue实现菜单缩放

基础实现代码

<template>
  <div class="menu-container">
    <button @click="toggleMenu">切换菜单</button>
    <div class="menu" :class="{ 'collapsed': isCollapsed }">
      <ul>
        <li>菜单项1</li>
        <li>菜单项2</li>
        <li>菜单项3</li>
      </ul>
    </div>
  </div>
</template>

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

<style>
.menu {
  width: 200px;
  transition: width 0.3s ease;
  background: #f0f0f0;
  overflow: hidden;
}

.menu.collapsed {
  width: 50px;
}

.menu ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.menu li {
  padding: 10px;
  white-space: nowrap;
}
</style>

进阶优化

添加图标和文字隐藏效果,提升用户体验。使用 v-showv-if 控制文字显示,并配合图标切换。

vue实现菜单缩放

<template>
  <div class="menu-container">
    <button @click="toggleMenu">
      {{ isCollapsed ? '展开' : '收起' }}
    </button>
    <div class="menu" :class="{ 'collapsed': isCollapsed }">
      <ul>
        <li>
          <span class="icon">📊</span>
          <span class="text" v-show="!isCollapsed">数据分析</span>
        </li>
        <li>
          <span class="icon">⚙️</span>
          <span class="text" v-show="!isCollapsed">设置</span>
        </li>
      </ul>
    </div>
  </div>
</template>

使用 CSS 变量动态控制

通过 CSS 变量实现更灵活的样式控制,便于主题切换或响应式调整。

.menu {
  --menu-width: 200px;
  width: var(--menu-width);
  transition: width 0.3s ease;
}

.menu.collapsed {
  --menu-width: 50px;
}

响应式设计

结合媒体查询,在小屏幕设备上默认折叠菜单。

@media (max-width: 768px) {
  .menu {
    width: 50px;
  }
  .menu:not(.collapsed) {
    width: 200px;
  }
}

注意事项

  • 过渡动画需设置 overflow: hidden 避免内容溢出。
  • 折叠时隐藏文字需考虑可访问性,可通过 aria-label 补充说明。
  • 动态内容(如路由菜单)需确保折叠状态下布局仍保持合理。

标签: 缩放菜单
分享给朋友:

相关文章

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 使用事件总线通信 在 Vue 中可以通过事件总线实现左右菜单的通信。创建一个中央事件总线实例,让左右菜单通过事件监听和触发实现联动。 // eventBus.js impo…

vue菜单实现

vue菜单实现

实现Vue菜单的基本方法 使用Vue.js创建菜单可以通过多种方式实现,包括使用原生Vue组件、第三方UI库或自定义解决方案。以下是几种常见的实现方法: 使用原生Vue组件 创建基本的菜单结构可以使…

css制作横向菜单

css制作横向菜单

使用 Flexbox 制作横向菜单 Flexbox 是制作横向菜单的现代方法,代码简洁且兼容性好。以下是一个基本实现: <nav class="horizontal-menu"> &…

vue 实现菜单下拉

vue 实现菜单下拉

Vue 实现菜单下拉的方法 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if 可以轻松控制下拉菜单的显示与隐藏。v-show 通过 CSS 的 displa…

vue实现菜单导航

vue实现菜单导航

Vue 实现菜单导航的方法 使用 Vue Router 实现基础路由导航 安装 Vue Router 依赖包: npm install vue-router 在项目中创建路由配置文件(如 route…