当前位置:首页 > 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 补充说明。
  • 动态内容(如路由菜单)需确保折叠状态下布局仍保持合理。

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

相关文章

css div 制作导航菜单

css div 制作导航菜单

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

vue实现下拉菜单

vue实现下拉菜单

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

jquery 菜单

jquery 菜单

jQuery 菜单实现方法 使用 jQuery 创建动态菜单可以通过多种方式实现,以下是几种常见的方法: 基于 HTML 和 CSS 的基础结构 创建菜单的 HTML 结构通常使用无序列表 <…

vue菜单tab实现

vue菜单tab实现

Vue 菜单 Tab 实现方法 使用动态组件切换内容 通过 Vue 的 component 动态组件结合 v-for 渲染菜单项,点击时切换显示内容: <template> <…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…