105 lines
2.7 KiB
Vue
105 lines
2.7 KiB
Vue
|
<docs>
|
|||
|
---
|
|||
|
order: 6
|
|||
|
title:
|
|||
|
zh-CN: 响应式布局
|
|||
|
en-US: Responsive
|
|||
|
---
|
|||
|
|
|||
|
## zh-CN
|
|||
|
|
|||
|
Layout.Sider 支持响应式布局。
|
|||
|
> 说明:配置 `breakpoint` 属性即生效,视窗宽度小于 `breakpoint` 时 Sider 缩小为 `collapsedWidth` 宽度,若将 `collapsedWidth` 设置为零,会出现特殊 trigger。
|
|||
|
|
|||
|
## en-US
|
|||
|
|
|||
|
Layout.Sider supports responsive layout.
|
|||
|
> Note: You can get a responsive layout by setting `breakpoint`, the Sider will collapse to the width of `collapsedWidth` when window width is below the `breakpoint`. And a special trigger will appear if the `collapsedWidth` is set to `0`.
|
|||
|
|
|||
|
</docs>
|
|||
|
<template>
|
|||
|
<a-layout>
|
|||
|
<a-layout-sider
|
|||
|
breakpoint="lg"
|
|||
|
collapsed-width="0"
|
|||
|
@collapse="onCollapse"
|
|||
|
@breakpoint="onBreakpoint"
|
|||
|
>
|
|||
|
<div class="logo" />
|
|||
|
<a-menu v-model:selectedKeys="selectedKeys" theme="dark" mode="inline">
|
|||
|
<a-menu-item key="1">
|
|||
|
<user-outlined />
|
|||
|
<span class="nav-text">nav 1</span>
|
|||
|
</a-menu-item>
|
|||
|
<a-menu-item key="2">
|
|||
|
<video-camera-outlined />
|
|||
|
<span class="nav-text">nav 2</span>
|
|||
|
</a-menu-item>
|
|||
|
<a-menu-item key="3">
|
|||
|
<upload-outlined />
|
|||
|
<span class="nav-text">nav 3</span>
|
|||
|
</a-menu-item>
|
|||
|
<a-menu-item key="4">
|
|||
|
<user-outlined />
|
|||
|
<span class="nav-text">nav 4</span>
|
|||
|
</a-menu-item>
|
|||
|
</a-menu>
|
|||
|
</a-layout-sider>
|
|||
|
<a-layout>
|
|||
|
<a-layout-header :style="{ background: '#fff', padding: 0 }" />
|
|||
|
<a-layout-content :style="{ margin: '24px 16px 0' }">
|
|||
|
<div :style="{ padding: '24px', background: '#fff', minHeight: '360px' }">content</div>
|
|||
|
</a-layout-content>
|
|||
|
<a-layout-footer style="text-align: center">
|
|||
|
Ant Design ©2018 Created by Ant UED
|
|||
|
</a-layout-footer>
|
|||
|
</a-layout>
|
|||
|
</a-layout>
|
|||
|
</template>
|
|||
|
<script lang="ts">
|
|||
|
import { UserOutlined, VideoCameraOutlined, UploadOutlined } from '@ant-design/icons-vue';
|
|||
|
import { defineComponent, ref } from 'vue';
|
|||
|
export default defineComponent({
|
|||
|
components: {
|
|||
|
UserOutlined,
|
|||
|
VideoCameraOutlined,
|
|||
|
UploadOutlined,
|
|||
|
},
|
|||
|
setup() {
|
|||
|
const onCollapse = (collapsed: boolean, type: string) => {
|
|||
|
console.log(collapsed, type);
|
|||
|
};
|
|||
|
|
|||
|
const onBreakpoint = (broken: boolean) => {
|
|||
|
console.log(broken);
|
|||
|
};
|
|||
|
|
|||
|
return {
|
|||
|
selectedKeys: ref<string[]>(['4']),
|
|||
|
onCollapse,
|
|||
|
onBreakpoint,
|
|||
|
};
|
|||
|
},
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
<style>
|
|||
|
#components-layout-demo-responsive .logo {
|
|||
|
height: 32px;
|
|||
|
background: rgba(255, 255, 255, 0.2);
|
|||
|
margin: 16px;
|
|||
|
}
|
|||
|
|
|||
|
.site-layout-sub-header-background {
|
|||
|
background: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.site-layout-background {
|
|||
|
background: #fff;
|
|||
|
}
|
|||
|
|
|||
|
[data-theme='dark'] .site-layout-sub-header-background {
|
|||
|
background: #141414;
|
|||
|
}
|
|||
|
</style>
|