vue element admin修改navbar,独占一行

<template>

  <div :class="classObj" class="app-wrapper">

    <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />

    <div class="fixed-header">

        <el-row>

  <el-col :span="24">

    <navbar></navbar>

  </el-col>

</el-row>

      </div>

    <div class="main-container">

      <div style="height: 60px;"></div>

        <sidebar class="sidebar-container" :style="{ width: barWidth }"  />

      <app-main />

    </div>

  </div>

</template>

<script>

import { Navbar, Sidebar, AppMain, } from './components'

import ResizeMixin from './mixin/ResizeHandler'

export default {

  name: 'Layout',

  components: {

    Navbar,

    Sidebar,

    AppMain,

  },

  mixins: [ResizeMixin],

  computed: {

    sidebar() {

      return this.$store.state.app.sidebar

    },

    device() {

      return this.$store.state.app.device

    },

    fixedHeader() {

      return this.$store.state.settings.fixedHeader

    },

    classObj() {

      return {

        hideSidebar: !this.sidebar.opened,

        openSidebar: this.sidebar.opened,

        withoutAnimation: this.sidebar.withoutAnimation,

        mobile: this.device === 'mobile'

      }

    }

  },

  methods: {

    handleClickOutside() {

      this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })

    }

  }

}

</script>

<style lang="scss" scoped>

  @import "~@/styles/mixin.scss";

  @import "~@/styles/variables.scss";

  .app-wrapper {

    @include clearfix;

    position: relative;

    height: 100%;

    width: 100%;

    &.mobile.openSidebar{

      position: fixed;

      top: 0;

    }

  }

  .drawer-bg {

    background: #000;

    opacity: 0.3;

    width: 100%;

    top: 0;

    height: 100%;

    position: absolute;

    z-index: 999;

  }

  .fixed-header {

    position: fixed;

    top: 0;

    right: 0;

    z-index: 9;

    width: 100%;

    transition: width 0.28s;

  }

  .hideSidebar .fixed-header {

    width: calc(100% - 54px)

  }

  .mobile .fixed-header {

    width: 100%;

  }

</style>

之后控制sidebar展开控制:

//找到store/modules/app.js文件

const app = {

  state: {

    sidebar: {

      // opened: !+Cookies.get('sidebarStatus'),        //原值

      opened:true,                                      //默认展开(false是隐藏)

      withoutAnimation: false

    },

    device: 'desktop',

    language: Cookies.get('language') || 'en',

    size: Cookies.get('size') || 'medium'

  },

  mutations: {

    TOGGLE_SIDEBAR: state => {            //点击收缩功能触发

      // if (state.sidebar.opened) {

      //   Cookies.set('sidebarStatus', 1)

      // } else {

      //   Cookies.set('sidebarStatus', 0)

      // }

      // state.sidebar.opened = !state.sidebar.opened

      state.sidebar.opened = true

      state.sidebar.withoutAnimation = false

    },

    CLOSE_SIDEBAR: (state, withoutAnimation) => {        //自适应触发

      Cookies.set('sidebarStatus',1)

      state.sidebar.opened = true

      state.sidebar.withoutAnimation = withoutAnimation

    }

    //......后面的就不展示了

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值