--- localeCode: zh-CN order: 62 category: 展示类 title: SideSheet 滑动侧边栏 icon: doc-sidesheet brief: 可从屏幕边沿滑出的浮层面板,通常用于承载二级操作页面 --- ## 代码演示 ### 如何引入 ```jsx import import { SideSheet } from '@douyinfe/semi-ui'; ``` ### 基本 默认侧边栏从右滑出,支持点击遮罩区关闭。 ```jsx live=true import React, { useState } from 'react'; import { SideSheet, Button } from '@douyinfe/semi-ui'; () => { const [visible, setVisible] = useState(false); const change = () => { setVisible(!visible); }; return ( <>

This is the content of a basic sidesheet.

Here is more content...

); }; ``` ### 自定义位置 可以通过设置 `placement` 属性设置侧边栏滑出位置,支持`top`, `bottom`, `left`, `right`。 ```jsx live=true import React, { useState } from 'react'; import { SideSheet, RadioGroup, Radio, Button } from '@douyinfe/semi-ui'; () => { const [visible, setVisible] = useState(false); const change = () => { setVisible(!visible); }; const [placement, setPlacement] = useState('right'); const changePlacement = e => { setPlacement(e.target.value); }; return ( <> right left top bottom

This is the content of a basic sidesheet.

Here is more content...

); }; ``` ### 自定义尺寸 可以通过设置 `size` 属性设置侧边栏尺寸,支持 `small`(400px), `medium`(684px), `large`(920px),仅在 `placement` 为 `left` 或 `right` 时生效。 `0.29.0` 版本之后支持。若默认的尺寸不满足你的需求,你还可以通过设置 `width` 属性自行设置宽度,例如 `width={900}` / `width={'800px'}` ```jsx live=true import React, { useState } from 'react'; import { SideSheet, RadioGroup, Radio, Button } from '@douyinfe/semi-ui'; () => { const [visible, setVisible] = useState(false); const change = () => { setVisible(!visible); }; const [size, setSize] = useState('small'); const changeSize = e => { setSize(e.target.value); }; return ( <> small medium large

This is the content of a basic sidesheet.

Here is more content...

); }; ``` ### 可操作的外部区域 在 `0.29.0` 版本之后,当 `mask={false}`时允许对外部区域进行操作。 当 SideSheet 是默认渲染在 body 中时(即不传入 getPopupContainer 参数),会在打开时自动给 body 添加 overflow: hidden 来禁止滚动。如果你希望外部区域依然可滚动,可以将 disableScroll 设为false ```jsx live=true import React, { useState } from 'react'; import { SideSheet, TextArea, Button } from '@douyinfe/semi-ui'; () => { const [visible, setVisible] = useState(false); const [value, setValue] = useState(''); return ( <>