当前位置:首页 > 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 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <…

vue实现左右菜单

vue实现左右菜单

实现左右菜单的基本思路 使用Vue实现左右菜单通常需要两个主要组件:左侧的导航菜单和右侧的内容区域。左侧菜单用于导航,右侧区域根据菜单选择动态展示内容。 创建左侧菜单组件 左侧菜单通常是一个列表,可…

css制作下拉菜单

css制作下拉菜单

CSS 制作下拉菜单的方法 使用纯 CSS 可以创建简单的下拉菜单效果,主要依赖 :hover 伪类和 display 属性控制子菜单的显示与隐藏。 基础 HTML 结构 <div clas…

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="n…

css二级菜单制作

css二级菜单制作

使用纯CSS实现二级菜单 通过嵌套HTML结构和CSS选择器实现二级菜单的显示与隐藏效果。以下是一个基础实现方案: HTML结构: <ul class="menu"> <…

css制作横向菜单

css制作横向菜单

使用浮动(Float)实现横向菜单 将菜单项的 display 属性设置为 float: left,使列表项横向排列。清除浮动避免影响后续布局。 ul.horizontal-menu { li…