Skip to content

Drawer 抽屉 ​

查看 sn-drawer 的 2.0 版本差异

基础用法 ​

从屏幕四个方向滑出的半屏面板,常用于导航菜单、筛选、购物车等场景。

  • 支持上下左右四个滑出方向与面板尺寸配置
  • 内置滑动关闭手势,未达阈值自动回弹,Web 端同时支持鼠标拖拽
  • 抽屉内容沿用弹出层的动态层级,嵌套打开其它弹层时层级正确

必须放在 sn-page 下

本组件为弹出层,需直接放在 sn-page 根节点下使用,否则主题颜色与动画时长等 CSS 变量无法作用到组件内部。

组件选型

内嵌长列表请改用 DrawerList,在 sn-drawer 内嵌长列表会出现严重的嵌套滚动问题;sn-float-board 始终显示、无需调用方法;sn-popup 只负责动画与显隐,UI 需自行实现。

vue
<template>
	<sn-page>
		<sn-button text="打开抽屉" type="primary" @click="open"></sn-button>
		<sn-drawer ref="drawerRef" position="bottom" height="300px">
			<sn-text text="抽屉内容"></sn-text>
		</sn-drawer>
	</sn-page>
</template>

<script lang="uts" setup>

const drawerRef = ref<SnDrawerComponentPublicInstance | null>(null)

function open(): void {
	drawerRef.value?.$callMethod('open')
}
</script>

更多演示请下载 demo 查看

属性 ​

参数说明类型默认值可选值
position抽屉滑出的方向Stringbottomtop | right | bottom | left
renderMode渲染模式,v-if 关闭后销毁内容,v-show 保留内容Stringv-ifv-if | v-show
showLine是否显示面板上的滑动指示条Booleantruetrue | false
slideClose是否启用滑动关闭手势Booleantruetrue | false
width面板宽度,position 为 left | right 时生效,支持 $ 前缀按间距乘数缩放String | Number300px-
height面板高度,position 为 top | bottom 时生效,支持 $ 前缀按间距乘数缩放String | Number300px-
slideHeight纵向滑动关闭阈值,滑动距离达到阈值则关闭,支持 $ 前缀按间距乘数缩放String | Number100px-
slideWidth横向滑动关闭阈值,滑动距离达到阈值则关闭,支持 $ 前缀按间距乘数缩放String | Number100px-
bgColor面板背景颜色,支持 $ 简写String$front-
lineColor滑动指示条颜色,支持 $ 简写String$lineText-
padding面板内边距,支持 $ 前缀按间距乘数缩放String25px 15px 10px 15px-
borderRadius面板圆角大小,支持 $ 简写String | Number$20-
aniTime显示 / 关闭动画时长(ms),支持 $ 简写String | Number$long-
preventBack显示时是否阻止页面返回事件Booleanfalsetrue | false
maskClose是否启用点击遮罩关闭Booleantruetrue | false
maskOpacity遮罩透明度Number0.3-
zIndex弹出层层级Number999-
customStyle自定义面板样式SnStyleValue''-

事件 ​

名称类型说明
clickoverlay() => Void点击遮罩时触发
beforeenter() => Void入场动画开始前触发
enter() => Void入场动画开始时触发
afterenter() => Void入场动画结束后触发
beforeleave() => Void离场动画开始前触发
leave() => Void离场动画开始时触发
afterleave() => Void离场动画结束后触发

方法 ​

名称参数返回值描述
open--打开抽屉
close--关闭抽屉

插槽 ​

名称说明
default抽屉面板内的内容

使用 MIT 协议