Vue 中屏幕改变 侧边栏显示隐藏功能

Vue 中屏幕改变 侧边栏显示隐藏功能

效果图
在这里插入图片描述

  1. 在缩放屏幕的时候监听到屏幕大小的变化, 侧边栏的状态跟着改变
  2. 代码是结合 mixinjs 中的 getBoundingClientRect() 方法
  3. 在页面导入 mixin
  4. import ResizeMixin from './mixin/Resize.js'
  5. mixins: [ResizeMixin],

getBoundingClientRect() 方法说明: 方法返回元素的大小及其相对于视口的位置。
MDN说明

mixin代码

import store from "@/store"
const { body } = document
// 设置一个宽度的大小, 用来判断当前的侧边栏展开折叠
const WIDTH = 992

export default {
    beforeMount() {
        // 页面进来的时候监听 屏幕的变化  调用方法
        window.addEventListener('resize', this.$_ResizeScreen)
    },
    beforeDestroy() {
        // 页面销毁的时候移除监听 屏幕的变化  调用方法
        window.removeEventListener('resize', this.$_ResizeScreen)
    },
    created() {
        this.$_ResizeScreen()
    },
    methods: {
        $_isMobile() {
            const react = body.getBoundingClientRect()
            return react.width - 1 < WIDTH
        },
        $_ResizeScreen() {
            const side_flag = this.$_isMobile()
            if (side_flag) {
                store.dispatch("app/Act_flodSide")
            } else if (!side_flag){
                store.dispatch("app/ACT_unflodSide")
            }
        }
    },
}

vuexapp.js代码

const state = {
    side_status: false, // 侧边栏状态 展开 false 或者 折叠 ture 
}
const mutations = {
    // 侧边栏状态 展开 或者 折叠
    CHANGE_SIDESTATUS(state) {
        state.side_status = !state.side_status
    },
    // 折叠侧边栏
    FLOD_SIDE(state) {
        state.side_status = true
    },
    // 展开侧边栏
    UNFLOD_SIDE(state) {
        state.side_status = false
    }
}
const actions = {
    // 侧边栏状态 展开 或者 折叠
    change_SideStatus({ commit }) {
        commit("CHANGE_SIDESTATUS")
    },
    // 折叠侧边栏
    Act_flodSide({ commit }) {
        commit("FLOD_SIDE")
    },
    // 展开侧边栏
    ACT_unflodSide({ commit }) {
        commit("UNFLOD_SIDE")
    }
}
export default {
    namespaced: true, // 之后在不同页面中引入getter、actions、mutations时,需要加上所属的模块名
    state,
    mutations,
    actions
}
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值