当前位置:首页 > VUE

vue实现菜单缩放

2026-01-17 16:44:38VUE

实现思路

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

基础实现代码

<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 控制文字显示,并配合图标切换。

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

vue elementui实现菜单

Vue ElementUI 实现菜单 安装 ElementUI 确保项目已安装 Vue 和 ElementUI。若未安装,可以通过以下命令安装: npm install element-ui 在 m…

纯css制作tab菜单

纯css制作tab菜单

纯CSS制作Tab菜单的方法 使用radio input控制切换 通过<input type="radio">和<label>元素配合实现无JavaScript的Tab切换效果…

css制作tab菜单

css制作tab菜单

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

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 基于路由的动态菜单 在 Vue 项目中,可以利用 Vue Router 实现动态菜单。首先定义路由配置,包含菜单所需的元信息(如标题、图标等)。 const routes =…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 数据绑定与状态管理 在 Vue 中实现左右菜单联动,核心是通过共享状态或事件通信实现数据同步。可以通过 Vuex 或组件间的 props/emit 机制管理联动状态。 //…

vue实现easyui缩放

vue实现easyui缩放

Vue 实现 EasyUI 缩放功能 要在 Vue 中实现类似 EasyUI 的缩放功能,可以通过以下步骤完成。EasyUI 是一个基于 jQuery 的 UI 框架,而 Vue 是一个现代化的前端框…