vue3.2 汉堡按钮伸缩项(左侧菜单的伸缩)

1、创建组件来使用,@/layout/components/hanburger.vue

2、引用到整体页面

3、vuex 中@/store/modules/app 设置参数,点击进行相关变化

 state: () => ({
    siderType: true,
  }),
 mutations: {
    changeSiderType(state) {
      state.siderType = !state.siderType
    },
  },

4.@/layout/components/hamburger.点击后图标的变化

<div class="hamburger-container" @click="toggleClick">
    <svg-icon :icon="icon"></svg-icon>
 </div>

//js中
// 使用vuex
import { useStore } from 'vuex'
import { computed } from 'vue'
const store = useStore()
const toggleClick = () => {
  store.commit('app/changeSiderType')
}
// 图标转换
const icon = computed(() => {
  return store.getters.siderType ? 'hamburger-opened' : 'hamburger-closed'
})

5、 menu是否折叠 @/layout/menu/index.vue

 :collapse="!$store.getters.siderType"

     菜单的宽度变化 @/layout/index.vue

//template
 <el-aside :width="asideWidth" class="sidebar-container">
      <Menu />
 </el-aside>

//js
// 使用到vuex
import { useStore } from 'vuex'
import variables from '@/styles/variables.scss'
const store = useStore()
const asideWidth = computed(() => {
  return store.getters.siderType
    ? variables.sideBarWidth
    : variables.hideSideBarWidth
})

    右侧的宽度也是动态变化的

//template
    <el-container
      class="container"
      :class="{ hidderContainer: !$store.getters.siderType }"
    >
      <el-header>
        <Headers />
      </el-header>
      <el-main>
        <router-view />
      </el-main>
    </el-container>


//css
 &.hidderContainer {
    width: calc(100% - $hideSideBarWidth);
  }


扩展:calc()动态计算   &.上一级的目录(lang='scss'使用)

要在Vue3中实现左侧伸缩菜单功能,可以使用自定义组件和Vue的响应式特性来实现。 首先,你可以创建一个名为`NavSide`的组件,用来实现侧边菜单栏的功能。在这个组件中,可以使用`ref`来定义一个`isCollapse`的响应式变量,用来表示菜单是否折叠。然后,在模板中使用条件渲染来展示不同状态下的菜单内容。例如,当`isCollapse`为`true`时,渲染折叠图标;当`isCollapse`为`false`时,渲染展开图标。 接下来,你可以创建一个名为`NavHeader`的组件,用来实现头部组件的功能。在这个组件中,可以使用`props`来接收`collapse`属性,并通过`emits`来定义一个`update:collapse`事件,用来更新菜单的折叠状态。在模板中,可以通过点击事件来触发`shrink`方法,并通过`emits`来触发`update:collapse`事件,从而改变菜单的折叠状态。 最后,你可以在父组件中使用这两个自定义组件,并通过`v-model`来双向绑定菜单的折叠状态。在父组件的模板中,可以使用`el-aside`和`el-header`来放置侧边菜单栏和头部组件,并通过`router-view`来展示其他内容。 总结起来,要实现左侧伸缩菜单功能,你需要: 1. 创建一个名为`NavSide`的组件,用来实现侧边菜单栏的功能。 2. 创建一个名为`NavHeader`的组件,用来实现头部组件的功能。 3. 在父组件中使用这两个自定义组件,并通过`v-model`来双向绑定菜单的折叠状态。 注意,以上代码只是简单的示例,你可能需要根据实际需求进行修改和完善。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue3 伸缩菜单组件](https://blog.csdn.net/m0_58565372/article/details/128549497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值