<list>
<list> 组件是一个高性能的可滚动容器,通过元素回收和懒加载机制优化性能和内存使用。它支持横向和纵向滚动,可实现单列、网格和瀑布流布局,非常适合无限滚动的信息流等应用场景。
使用指南
单列布局
1. 设置宽高:<list> 的宽高代表了其可视区域的大小,因此需要是确定的值,不能由内部内容撑开,只有在可视区域内可见的子节点才会被渲染。
2. 设置滚动方向与布局形式:设置属性 scroll-orientation 指定布局与滚动方向,设置 list-type 与 span-count 指定布局形式。
3. 配置子节点:使用标签 <list-item> 作为 <list> 直接子节点,并且给 <list-item> 设置 item-key 与 key,并且需要保持一致。
多列布局
1. 设置布局方式与列数: 设置布局形式 list-type 为 flow (网格布局) 或者 waterfall (瀑布流 布局),并设置 span-count >= 2。
2. 多列布局下实现独占一行的子节点: 为 <list-item/> 设置 full-span 属性,可以使其在布局中独占一行或者一列。
网格布局案例:
瀑布流布局示例
List 相关 CSS 属性
List 相关 CSS 属性是专门为 <list> 组 件设计的,例如 list-main-axis-gap 和 list-cross-axis-gap,可以对 <list> 内元素的布局和间距进行精细控制。需要注意的是,这些属性只在 <list> 上生效,在其他任何组件上都将被忽略。
list-main-axis-gap
指定了在主轴方向上,<list> 子节点的间距,需要写在 style 中。
list-cross-axis-gap
指定了在副轴方向上,<list> 子节点的间距,需要写在 style 中。
属性
list-type Required
控制 <list> 组件的布局类型,需要与 span-count 配合使用。
你可以通过查看多列布局指南 中的真实案例更清晰地看出 flow 和 waterfall 的布局差异。
span-count Required
设置 <list> 组件的布局列数或者行数。
scroll-orientation Required
设置 <list> 组件的滚动方向与布局方向。
item-key Required
item-key 是 <list-item> 上必须传入的属性。
开发者需要为每一个 <list> 子节点设置唯一的 item-key,其会被用来帮助 <list> 识别哪些 <list> 子节点已更改、添加或删除。因此开发者需要保证正确设置 item-key,如设置有误,将会导致错乱、闪动问题。
key Required
使用 key 属性来帮助框架识别哪些元件已更改、添加或删除。
在 list 场景下,key 和 item-key 保持一致。
enable-scroll
是否允许 <list> 组件滚动。
enable-nested-scroll
是否允许 <list> 与其他滚动容器实现嵌套滚动,开启后先滚动内层容器,再滚动外层容器。
sticky
声明在 <list> 组件上,控制 <list> 组件整体是否允许吸顶或者吸底。
sticky-offset
吸顶或者吸底位置距离 <list> 顶部或者底部的偏移,单位为 px。
sticky-top
声明在子节点 <list-item> 上,控制该节点是否会吸顶。
sticky-bottom
声明在子节点 <list-item> 上,控制该节点是否会吸底。
recyclable
声明在子节点 <list-item> 上,控制该节点是否会被回收,如果 recyclable 设置为 false,则 <list-item> 被滑出 <list> 可视区域后不会被回收。
bounces
开启边缘回弹效果。
initial-scroll-index
指定 <list> 在渲染后自动定位到的节点位置,仅首次生效。
need-visible-item-info
控制滚动事件回调参数中是否包含当前正在渲染节点的位置信息,这里滚动事件包含:scroll


