欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3菜單展開和收起實現(xiàn)

 更新時間:2024年09月18日 09:49:56   作者:jnfy  
在Vue項目中實現(xiàn)首頁布局,包括可收放的左側菜單和主體內容區(qū),在store中管理菜單狀態(tài),通過修改isCollapse狀態(tài)控制菜單的展開與收起,在home.vue中編寫左側菜單欄的代碼和樣式,實現(xiàn)一個響應式的用戶界面

Vue3菜單展開和收起

先確定我們首頁的布局

我們使用一下這種,在src/views/home.vue:

<template>
  <div class="common-layout">
    <el-container>
      <el-aside width="200px">Aside</el-aside>
      <el-container>
        <el-header>Header</el-header>
        <el-main>Main</el-main>
      </el-container>
    </el-container>
  </div>
</template>

先寫一下我們左邊的菜單

菜單可以收起和展開,所以我們在store/module/common.js 中定義一個 isCollapse狀態(tài)和修改isCollapse的方法。

import { defineStore } from 'pinia'
export const useCommonStore = defineStore('common', {
  state: () => {
    return {
      token: null,
      isCollapse: false, //默認值
    }
  },
  actions: {
   //改變isCollapse
    updateCollapse() {
      this.isCollapse = !this.isCollapse
    },
  },
  persist: true,
})

這是我要實現(xiàn)的左側菜單欄代碼和樣式

//src/views/home.vue
<template>
  <div>
    <el-container>
      <el-aside @mouseover="mouseover" :width="store.isCollapse ? '100px' : '258px'">
        <div class="sidebar">
          <div  class="ga-flex ga-ai-c ga-j-sb  logo-warp p-15">
            <img class="logo m-r-10" src="./../assets/images/galaxy-logo.png" />
            <h2  v-if="!store.isCollapse" class="flex-1">GaUI</h2>
            <a @click="open" v-if="!store.isCollapse">
              <i class="icon-align-left f-20"></i>
            </a>
          </div>
          <div class="p-15">
            <el-menu
              active-text-color="#534686"
              class="el-menu-vertical-demo"
              :collapse="store.isCollapse"
              @open="handleOpen"
              @close="handleClose"
            >
                <el-sub-menu index="1">
                  <template #title>
                    <el-icon><location /></el-icon>
                    <span>Navigator One</span>
                  </template>
                  <el-menu-item index="1-1">item one</el-menu-item>
                  <el-menu-item index="1-2">item two</el-menu-item>
                 
                </el-sub-menu>
             
            </el-menu>
          </div>
        </div>
      </el-aside>
      <el-container>
        <el-header>
          <div>header</div>
        </el-header>
        <el-main>
          Main
        </el-main>
        <el-footer>Footer</el-footer>
      </el-container>
    </el-container>
  </div>
</template>
<script setup>
import { useCommonStore } from '../store/module/common.js'
const store = useCommonStore()
// 點擊展開收起
const open = () => {
  store.updateCollapse()
}
// 如果是收起狀態(tài),那么鼠標移入時則展開
const mouseover = () => {
  if (store.isCollapse) {
    store.updateCollapse()
  }
}
const handleOpen = (key, keyPath) => {
  //console.log(key, keyPath)
}
const handleClose = (key, keyPath) => {
  //console.log(key, keyPath)
}
</script>
<style lang="scss" scoped>
.sidebar {
  background-color: #ffffff;
  transition: 0.3s;
  min-height: 100vh;
  .logo-warp {
    padding: 20px 25px;
    box-shadow: -9px 0 20px rgb(89 102 122 / 10%);
    .logo {
      width: 50px;
      height: 50px;
    }
    a{
      &:hover{
        color: #534686;
      }
    }
  }
  .el-sub-menu__title:hover {
    background-color: var(--el-menu-hover-bg-color);
  }
}
.el-aside {
  box-shadow: 0 0 21px 0 rgb(89 102 122 / 10%);
}
.el-menu {
  border-right: none !important;
}
.el-menu-vertical-demo:not(.el-menu--collapse) {
  width: 228px;
  min-height: 100%;
}
</style>

左側菜單效果:

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue 實現(xiàn)登錄界面驗證碼功能

    Vue 實現(xiàn)登錄界面驗證碼功能

    本文通過實例代碼給大家介紹了Vue 實現(xiàn)登錄界面 驗證碼功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

    vue中有一張響應式系統(tǒng)的流程圖,vue會將模板語法編譯成render函數(shù),通過render函數(shù)渲染生成Virtual?dom,但是官方并沒有對模板編譯有詳細的介紹,這篇文章帶大家一起學習下vue的模板編譯
    2023-07-07
  • 詳解vue為什么要求組件模板只能有一個根元素

    詳解vue為什么要求組件模板只能有一個根元素

    這篇文章主要介紹了vue為什么要求組件模板只能有一個根元素,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • vue中常用方法的用法匯總

    vue中常用方法的用法匯總

    Vue.js?是一個用于構建用戶界面的漸進式框架,本文主要為大家整理了一些常用的?Vue?方法及其詳細說明和代碼示例,有需要的小伙伴可以參考一下
    2023-11-11
  • elementui的table列超出隱藏tooltip懸浮顯示問題

    elementui的table列超出隱藏tooltip懸浮顯示問題

    這篇文章主要介紹了elementui的table列超出隱藏tooltip懸浮顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 10個Vue3中常用的組合式?API用法詳解

    10個Vue3中常用的組合式?API用法詳解

    通過Vue?3,組合式API增強了我們利用Vue的能力,使我們的代碼更具模塊性和可讀性,本文主要來和大家分享10個常用的Vue3組合式API,希望對大家有所幫助
    2024-01-01
  • vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

    vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明

    這篇文章主要介紹了vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明

    Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明

    這篇文章主要介紹了Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue.js實現(xiàn)備忘錄功能的方法

    vue.js實現(xiàn)備忘錄功能的方法

    下面小編就為大家?guī)硪黄獀ue.js實現(xiàn)備忘錄功能的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue keep-alive實踐總結(推薦)

    Vue keep-alive實踐總結(推薦)

    本篇文章主要介紹了Vue keep-alive實踐總結(推薦),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論