20 移动端布局开发 - udo-bit/naive_admin_pro GitHub Wiki
完成移动端布局反转色支持 完成移动端到pad端到pc端的菜单转换
我们在移动端模式下,我们的侧边栏和我们的header部分都需要反转色的功能,并且是单独控制的,所以删除原先的属性,并增加两个新的属性分别是headerInverted�,drawerInverted
我们要实现drawer的反转色功能的话,我们可以借助layout布局的方式实现。
- 取消边框的padding
- 使用n-layout布局
- 显示logo和标题,可以动态的隐藏和显示(参考side-layout的布局效果)
只复制了有改动的部分代码
<script lang="ts" setup>
const props = withDefaults(defineProps<{
headerHeight?: number
logo?: string
title?: string
+ headerInverted?: boolean
+ drawerInverted?: boolean
visible?: boolean
+ logoVisible?: boolean
}>(), {
headerHeight: 48,
visible: false,
logoVisible: true,
})
</script>
<template>
<n-drawer-content body-content-style="padding:0">
<n-layout class="h-100%">
<n-layout-header class="h-100%" :inverted="drawerInverted">
《斯通纳》是美国作家约翰·威廉姆斯在 1965 年出版的小说。
</n-layout-header>
</n-layout>
</n-drawer-content>
</template>
如果当我们拖动的过程中,窗口大小会发生变化,同时我们的布局模式也应该跟随变化。
- 从桌面到pad端
如果从桌面到pad端,那么我们应该自动收起侧边栏增大可用空间
- 从pad端到移动端
直接切到移动端布局模式,不需要处理
- 移动端到pad端
同样不需要做处理
- pad端到桌面端,我们需要自动打开侧边栏
实现代码在basic-layout中:
const { isMobile, isDesktop, isPad } = useQueryBreakpoints()
watchEffect(() => {
if (isDesktop.value)
appStore.updateCollapsed(false)
else if (isPad.value)
appStore.updateCollapsed(true)
if (isMobile.value)
appStore.updateVisible(false)
})
先将布局修改为混合布局进行测试