scroll-view 可滚动视图区域

解释:可滚动视图区域,可实现横向滚动和竖向滚动。使用竖向滚动时,需要给定该组件一个固定高度,可以通过 CSS 设置 height 。

属性说明

属性名类型默认值必填说明

scroll-x

Boolean

false

允许横向滚动

scroll-y

Boolean

false

允许纵向滚动

upper-threshold

Number/String

50

距顶部 / 左边多远时(单位 px),触发 scrolltoupper 事件

lower-threshold

Number/String

50

距底部 / 右边多远时(单位 px),触发 scrolltolower 事件

scroll-top

Number/String

设置竖向滚动条位置。要动态设置滚动条位置,用法scroll-top=”{= scrollTop =}”
如果在设置组件渲染数据的同时设置了 scroll-top、scroll-left 值,需要在 swan.nextTick 回调中设置 scroll-top、scroll-left ,确保滚动条位置准确

scroll-left

Number/String

设置横向滚动条位置。要动态设置滚动条位置,用法scroll-left=”{= scrollLeft =}”
如果在设置组件渲染数据的同时设置了 scroll-top、scroll-left 值,需要在 swan.nextTick 回调中设置 scroll-top、scroll-left ,确保滚动条位置准确

scroll-into-view

String

值应为某子元素 id(id 不能以数字开头)。设置滚动方向后,按方向滚动到该元素,动态设置用法scroll-into-view=”{= scrollIntoView =}”

scroll-with-animation

Boolean

false

在设置滚动条位置时使用动画过渡

enable-back-to-top

Boolean

false

iOS 点击顶部导航栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向

bindscrolltoupper

EventHandle

滚动到顶部 / 左边,会触发 scrolltoupper 事件

bindscrolltolower

EventHandle

滚动到底部 / 右边,会触发 scrolltolower 事件

bindscroll

EventHandle

滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

示例

跳转编辑工具

在开发者工具中打开

在 WEB IDE 中打开

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

代码示例 1:纵向滚动

  • SWAN
  • JS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <view class="top-description">纵向滚动</view>
  4. <scroll-view
  5. class="scroll-view"
  6. scroll-y
  7. upper-threshold="1"
  8. lower-threshold="1"
  9. scroll-top="{= scrollTop =}"
  10. scroll-into-view="{= scrollIntoView =}"
  11. scroll-with-animation="true"
  12. enable-back-to-top="true"
  13. bindscrolltoupper="upper"
  14. bindscrolltolower="lower"
  15. bindscroll="scroll">
  16. <!-- 设置box与是scroll-view区域同高是为了滚动条能正常展示 -->
  17. <view class="box">
  18. <view id="one" class="color-a">A</view>
  19. <view id="two" class="color-b">B</view>
  20. <view id="three" class="color-c">C</view>
  21. </view>
  22. </scroll-view>
  23. <view class="page-section-btns">
  24. <view class="next-page" bindtap="tap">下一页</view>
  25. <view bindtap="tapMove">滚动</view>
  26. <view class="scroll-to-top" bindtap="scrollToTop">回顶部</view>
  27. </view>
  28. </view>
  29. </view>

代码示例 2:横向滚动

  • SWAN
  • JS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <view class="top-description">横向滚动</view>
  4. <scroll-view
  5. class="scroll-view"
  6. scroll-x
  7. bindscrolltoupper="toLeft"
  8. bindscrolltolower="toRight"
  9. scroll-left="{= scrollLeft =}"
  10. upper-threshold="1"
  11. lower-threshold="1"
  12. bindscroll="scroll">
  13. <view id="four" class="color-a row-view">A</view>
  14. <view id="five" class="color-b row-view">B</view>
  15. <view id="six" class="color-c row-view">C</view>
  16. </scroll-view>
  17. </view>
  18. </view>

Bug & Tip

  • Tip:请勿在 scroll-view 中使用 textarea、map、canvas、video 组件;详情请参考原生组件说明
  • Tip:scroll-into-view 的优先级低于 scroll-top、scroll-left 。
  • Bug:在滚动 scroll-view 时会阻止页面回弹,所以在 scroll-view 中滚动,是无法触发 onPullDownRefresh
  • Tip:若要使用下拉刷新,请使用页面的滚动,而不是 scroll-view 。
  • Tip:scroll-into-view、scroll-top、scroll-left 需要在页面数据高度(或宽度)撑开时生效,若有异步加载数据,请在数据渲染完成时,重新动态赋值,才可生效。
  • Tip:在设置 scroll-view 组件 height 属性不是内容可视区总高度时,使用 swan.pageScrollTo API 无法生效。
  • Tip:暂不支持 border-radius 特性。

常见问题

Q:scroll-view 的 scroll-top 设置是否是无效的?

A:使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 CSS 设置 height 。

代码示例

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • SWAN
  • JS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <view class="top-description">纵向滚动</view>
  4. <scroll-view
  5. scroll-y
  6. style="height: 1.66rem;"
  7. scroll-into-view="{= toView =}"
  8. scroll-top="{= scrollTop =}"
  9. >
  10. <view id="one" class="color-a">A</view>
  11. <view id="two" class="color-b">B</view>
  12. <view id="three" class="color-c">C</view>
  13. </scroll-view>
  14. <view class="page-section-btns">
  15. <view class="scrollToTop" bindtap="scrollToTop">回顶部</view>
  16. </view>
  17. </view>
  18. </view>