Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
b607af1e
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3188
Star
106
Fork
809
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
69
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
69
合并请求
69
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
b607af1e
编写于
10月 02, 2023
作者:
DCloud_Heavensoft
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update scroll-view.md
上级
72a662bd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
55 addition
and
45 deletion
+55
-45
docs/uni-app-x/component/scroll-view.md
docs/uni-app-x/component/scroll-view.md
+55
-45
未找到文件。
docs/uni-app-x/component/scroll-view.md
浏览文件 @
b607af1e
...
...
@@ -7,16 +7,16 @@
<!-- UTSCOMJSON.scroll-view.event -->
<!-- UTSCOMJSON.scroll-view.example -->
### 自定义下拉刷新样式
1.
设置
`refresher-default-style`
属性为 none 不使用默认样式
2.
自定义下拉刷新元素必须要声明为 slot="refresher",需要设置刷新元素宽高信息否则可能无法正常显示!
3.
通过组件提供的refresherpulling、refresherrefresh、refresherrestore、refresherabort下拉刷新事件调整自定义下拉刷新元素!实现预期效果
**注意:**
目前自定义下拉刷新元素不支持放在scroll-view的首个子元素位置上。可能无法正常显示
```
vue
**注意:**
目前自定义下拉刷新元素不支持放在scroll-view的首个子元素位置上。可能无法正常显示
```
vue
<scroll-view
refresher-default-style=
"none"
:refresher-enabled=
"true"
:refresher-triggered=
"refresherTriggered"
@
refresherpulling=
"onRefresherpulling"
@
refresherrefresh=
"onRefresherrefresh"
@
refresherrestore=
"onRefresherrestore"
style=
"flex:1"
>
...
...
@@ -33,49 +33,59 @@
</scroll-view>
```
**具体代码请参考:**
[
自定义下拉刷新样式示例
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/component/scroll-view/scroll-view-custom-refresher-props.uvue
)
### nested-scroll嵌套滚动协商
+
通过设置
`custom-nested-scroll = true`
,开启与父组件实现嵌套滚动协商。仅list-view、scroll-view组件支持与父组件嵌套滚动协商!
```
html
<scroll-view
style=
"height: 100%;"
scroll-y=
"true"
rebound =
"false"
@
startnestedscroll=
"onStartNestedScroll"
@
nestedprescroll=
"onNestedPreScroll"
@
stopnestedscroll=
"onStopNestedScroll"
>
...
<view
style=
"height: 100px;"
>
停靠视图
</view>
<list-view
class=
"child-scroll"
scroll-y=
"true"
custom-nested-scroll=
"true"
>
...
</list-view>
</scroll-view>
```
+
子组件准备滚动时会触发父组件的
`startnestedscroll`
事件。父组件响应
`startnestedscroll`
事件return ture则表示与子组件建立嵌套滚动协商。
```
html
onStartNestedScroll(event: StartNestedScrollEvent): Boolean {
//开启与子组件建立嵌套滚动协商
return true
}
```
+
当建立嵌套滚动协商后!父组件会持续收到
`nestedprescroll`
事件,事件中会返回NestedPreScrollEvent子组件将要滚动的数据。
+
执行NestedPreScrollEvent.consumed(x,y)函数告知子组件本次
`nestedprescroll`
事件deltaX、deltaY各消耗多少。子组件将执行差值后的deltaX、deltaY滚动距离。
```
html
onNestedPreScroll(event: NestedPreScrollEvent) {
var deltaY = event.deltaY
var deltaX = event.deltaX
...
if() {
//告知子组件deltaX、deltaY各消耗多少
event.consumed(x, y)
}
}
```
+
滚动行为停止后会触发
`stopnestedscroll`
事件
+
仅Android平台支持嵌套滚动协商
**具体代码请参考:**
[
nested-scroll嵌套滚动示例
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/template/long-list/long-list.uvue
)
**具体代码请参考:**
[
自定义下拉刷新样式示例
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/component/scroll-view/scroll-view-custom-refresher-props.uvue
)
### nested-scroll嵌套滚动协商
嵌套滚动是原生才有的概念,web没有。
它是指父子2个滚动容器嵌套,在滚动时可以互相协商,控制父容器怎么滚、子容器怎么滚。
1.
通过在子滚动容器设置
`custom-nested-scroll = true`
,开启与父组件实现嵌套滚动协商。仅list-view、scroll-view组件支持与父组件嵌套滚动协商。
下面的示例代码,在一个scroll-view中嵌套了一个list-view。在list-view上设置了custom-nested-scroll="true"。
```
html
<scroll-view
style=
"height: 100%;"
scroll-y=
"true"
rebound =
"false"
@
startnestedscroll=
"onStartNestedScroll"
@
nestedprescroll=
"onNestedPreScroll"
@
stopnestedscroll=
"onStopNestedScroll"
>
...
<view
style=
"height: 100px;"
>
停靠视图
</view>
<list-view
class=
"child-scroll"
scroll-y=
"true"
custom-nested-scroll=
"true"
>
...
</list-view>
</scroll-view>
```
2.
子组件准备滚动时会触发父组件的
`startnestedscroll`
事件。父组件响应
`startnestedscroll`
事件return ture则表示与子组件建立嵌套滚动协商。
```
ts
onStartNestedScroll
(
event
:
StartNestedScrollEvent
):
Boolean
{
//开启与子组件建立嵌套滚动协商
return
true
}
```
3.
当建立嵌套滚动协商后,子组件滚动时父组件会持续收到
`nestedprescroll`
事件,这个事件的含义是嵌套滚动即将发生。
事件中会返回NestedPreScrollEvent子组件将要滚动的数据。
4.
父组件执行NestedPreScrollEvent.consumed(x,y)函数,告知子组件本次
`nestedprescroll`
事件deltaX、deltaY各消耗多少,即父组件要消费掉多少滚动距离。
子组件将执行差值后的deltaX、deltaY滚动距离,也就是剩余的滚动余量留给子组件。
```
ts
onNestedPreScroll
(
event
:
NestedPreScrollEvent
)
{
var
deltaY
=
event
.
deltaY
var
deltaX
=
event
.
deltaX
...
if
()
{
//告知子组件deltaX、deltaY各消耗多少
event
.
consumed
(
x
,
y
)
}
}
```
+
滚动行为停止后会触发
`stopnestedscroll`
事件
+
仅Android平台支持嵌套滚动协商
**具体代码请参考:**
[
nested-scroll嵌套滚动示例
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/template/long-list/long-list.uvue
)
<!-- UTSCOMJSON.scroll-view.compatibility -->
<!-- UTSCOMJSON.scroll-view.children -->
<!-- UTSCOMJSON.scroll-view.children -->
<!-- UTSCOMJSON.scroll-view.reference -->
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录