Skip to content

View 视图容器 ​

查看 sn-view 的 2.0 版本差异

基础用法 ​

最基础的视图容器,用于包裹各种元素内容、搭建页面结构,用法与内置 view 组件类似。

  • 在内置 view 之上扩展了区域加载、区域禁用、点击态与丰富的手势事件
  • 支持通过属性快速设置背景色、圆角、内边距、外边距与阴影
vue
<template>
	<sn-view bg-color="$primaryLight" border-radius="$16" padding="14px">
		<sn-text text="一个容器"></sn-text>
	</sn-view>
</template>

更多演示请下载 demo 查看

区域加载与禁用 ​

  • loading 为 true 时覆盖一层半透明遮罩并显示加载指示器,区域内容不可交互,容器尺寸保持不变。
  • disabled 为 true 时屏蔽区域内所有组件的交互,区域整体变淡。
vue
<template>
	<sn-view :loading="loading" padding="14px">
		<sn-text text="加载中的区域"></sn-text>
	</sn-view>
</template>

点击态 ​

  • 通过 hover-style(格式同 custom-style)设置按下时应用的样式,松开后平滑恢复。
  • hover-start-time 控制按下后进入点击态的延迟,hover-stay-time 控制松开后点击态保留时长,hover-trans-time 控制过渡时长。
vue
<template>
	<sn-view padding="18px" hover-style="transform:scale(0.95);">
		<sn-text text="按下轻微缩放"></sn-text>
	</sn-view>
</template>

手势事件 ​

sn-view 支持按下(down)、单击(click)、双击(dbclick)、长按(longpress)、双指旋转(rotate)、双指缩放(scale)以及 touchstart、touchmove、touchend、touchcancel 触摸事件。

  • 指针类事件回调参数为 SnPointerEvent,包含 x、y 与原始事件。
  • 触摸类事件回调参数为 SnTouchEvent,其中的每个 SnTouch 额外携带 diffX、diffY(与上次的位移)和 direction(up / down / left / right / none),可直接用于滑动判断。
vue
<template>
	<sn-view @touchmove="onTouchMove">
		<sn-text text="滑动的方向"></sn-text>
	</sn-view>
</template>

属性 ​

参数说明类型默认值可选值
loading是否区域加载状态,为 true 时覆盖遮罩并显示加载指示器,内容不可交互Booleanfalsetrue | false
disabled是否区域禁用状态,为 true 时屏蔽区域内所有组件的交互Booleanfalsetrue | false
bgColor背景颜色,支持 $ 功能色简写String--
borderRadius圆角大小,支持 $ 简写String | Number--
margin外边距,支持 $ 简写String | Number0-
padding内边距,支持 $ 简写String | Number0-
boxShadow阴影,一般不要设置,uni-app x 的阴影在 App 端时有异常String--
aniTime动画时长,$ 开头时乘以动画时长乘数String | Number$250-
hoverStyle按下时应用的样式,为空时不启用点击态SnStyleValue--
hoverStopPropagation是否阻止点击态扩散到父节点Booleanfalsetrue | false
hoverStartTime按下后进入点击态的延迟时间(ms)Number50-
hoverStayTime手指松开后点击态保留时间(ms)Number0-
hoverTransTime进入/退出点击态的过渡时长,取 aniTimeString | Number--
loadingStyle加载指示器的自定义样式SnStyleValue--
customStyle自定义根节点样式SnStyleValue--
loadingClass加载指示器的外部样式类String--
customClass根节点的外部样式类String--

事件 ​

名称类型说明
click(event: SnPointerEvent) => Void点击事件
dbclick(event: SnPointerEvent) => Void双击事件(300ms 内连续点击两次)
down(event: SnPointerEvent) => Void按下事件
longpress(event: SnTouchEvent) => Void长按事件
touchstart(event: SnTouchEvent) => Void手指落下事件
touchmove(event: SnTouchEvent) => Void手指移动事件
touchend(event: SnTouchEvent) => Void手指抬起事件
touchcancel(event: SnTouchEvent) => Void触摸打断事件
rotate(event: SnRotateEvent) => Void双指旋转事件,degree 为相对上一次旋转事件的角度增量(deg),顺时针为正
scale(event: SnScaleEvent) => Void双指缩放手势事件,zoom 为相对上一次缩放事件的倍数
字段类型必备描述
typeString是事件类型:click | dbclick | down
xNumber是点击点横坐标
yNumber是点击点纵坐标
eventUniPointerEvent否原事件,可用以阻止默认行为、阻止冒泡
字段类型必备描述
degreeNumber是相对上一次旋转事件的角度增量(deg),顺时针为正
字段类型必备描述
zoomNumber是缩放倍数(相对上一次缩放事件)
字段类型必备描述
typeString是事件类型:touchstart | touchend | touchmove | touchcancel | longpress | showpress
touchesArray<SnTouch>是多指触摸信息
eventUniEvent否原事件,可用以阻止默认行为、阻止冒泡
字段类型必备描述
xNumber是触摸点横坐标
yNumber是触摸点纵坐标
diffXNumber是相对上一次触摸点的横向差值(正右负左)
diffYNumber是相对上一次触摸点的纵向差值(正下负上)
directionString是手指移动方向
idNumber是手指 ID

插槽 ​

名称说明
default在这里放置内容

使用 MIT 协议