用户3116712
用户3116712
  • 发布:2026-10-15 11:16
  • 更新:2026-10-15 11:16
  • 阅读:6

List列表子组件顺序动画展示常见问题

分类:HBuilder

Q:列表(List)通常会一次性全部展示出来,那么如何实现列表中的子组件能够依照链式先后顺序动画进行展示?

A:实现步骤如下:

根据数据源this.data创建List:
if (this.isShow) {
List() {
ForEach(this.data, (item: number) => {
ListItem() {
CardItem({ index: item });
}
.margin(10)
}, (item: number) => item.toString())
}
}
创建List的每个子组件CardItem,该组件可以根据其在列表中的索引(index)来计算出一个适当的延迟时间,从而实现一种链式的动画效果,即前一个动画结束之后,下一个动画随即开始。
.animation({
duration: 500,
delay: this.index 120,
curve: Curve.EaseOut
})
当CardItem组件首次出现在视图中(即onAppear事件被触发时),将启动该组件的入场动画。
.onAppear(() => {
this.isAppear = true;
})
.onDisAppear(() => {
this.isAppear = false;
})
完整示例参考如下:
@Component
struct CardItem {
// 创建List的每个子组件CardItem
@Prop index: number;
@State isAppear: boolean = false;
build() {
Column() {
Text(${this.index}).fontColor(Color.Blue).fontSize(24);
}
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
.backgroundColor(Color.Green)
.height(60)
.width('100%')
.opacity(this.isAppear ? 1 : 0)
.translate({ x: this.isAppear ? 0 : 100 })
.borderRadius(8)
// 增加动画效果
.animation({
duration: 500,
delay: this.index
120,
curve: Curve.EaseOut
})
// 组件出现启动组件的入场动画
.onAppear(() => {
this.isAppear = true;
})
.onDisAppear(() => {
this.isAppear = false;
})
}
}

@Entry
@Component
struct ChainList {
private data: number[] = [0, 1, 2, 3, 4, 5];
@State isShow: boolean = false; // 是否展示List
build() {
Column() {
Button('show list').onClick(() => {
this.isShow = !this.isShow;
})
// 根据数据源this.data创建List
if (this.isShow) {
List() {
ForEach(this.data, (item: number) => {
ListItem() {
CardItem({ index: item });
}
.margin(10)
}, (item: number) => item.toString())
}
}
}.justifyContent(FlexAlign.Center).width('100%')
}
}
https://pastebin.com/Ltaj6iDs
https://pastebin.com/4X1zUdpF
https://pastebin.com/awnUwQre
https://pastebin.com/HzdV0VJK
https://pastebin.com/nhqCkgFA
https://pastebin.com/0pHEyWwm
https://pastebin.com/p3HZvHnU
https://pastebin.com/rXF1YV70
https://pastebin.com/dqFCriTC
https://pastebin.com/LL2pPLG6
https://pastebin.com/wH5ZXGN4
https://pastebin.com/nu6nqsVE
https://pastebin.com/sjdcPTaw
https://pastebin.com/ii510JSW
https://pastebin.com/1ei6PXSZ
https://pastebin.com/Xdc3xmZU
https://pastebin.com/awdmCcVV
https://pastebin.com/Cqk5Zqeu
https://pastebin.com/nAuVg5Kk
https://pastebin.com/0E29W1SN
https://pastebin.com/ZTzz5XeS
https://pastebin.com/kW1Fieh8
https://pastebin.com/QwExRLz6
https://pastebin.com/KUD5K6CS
https://pastebin.com/aHHVv5hE
https://pastebin.com/xzi1vVzU
https://pastebin.com/diVzRQHf
https://pastebin.com/tDAfDiWc
https://pastebin.com/WVbCEJDZ
https://pastebin.com/keZyWZsA
https://pastebin.com/9DJBmv2w
https://pastebin.com/tVuxW7Pf
https://pastebin.com/uyQTgAPT
https://pastebin.com/W3UV2NAX
https://pastebin.com/nQeyQP4C
https://pastebin.com/3S4tvfZh
https://pastebin.com/wfG5sKje
https://pastebin.com/B6WpXwCX
https://pastebin.com/R9Yzuyay
https://pastebin.com/5cnKfDBx
https://pastebin.com/J29V9CvJ
https://pastebin.com/B34QkjHT
https://pastebin.com/fE26xNhP
https://pastebin.com/4vacU1gW
https://pastebin.com/yF2pN88u
https://pastebin.com/JttsnLw3
https://pastebin.com/VsNhjrCM
https://pastebin.com/CR4M03M9
https://pastebin.com/gfjDPJ9f
https://pastebin.com/qqhS1c4r
https://pastebin.com/X3Y4JgEL
https://pastebin.com/9B5kakyu
https://pastebin.com/X3Y4JgEL
https://pastebin.com/9B5kakyu
https://pastebin.com/eLyDgZZt
https://pastebin.com/Z1PkvR63
https://pastebin.com/Zi3GLYAk
https://pastebin.com/HrNApv9b
https://pastebin.com/xDv6q61N
https://pastebin.com/ua26H1VU
https://pastebin.com/TBQ2iQ4r
https://pastebin.com/shV1urYX
https://pastebin.com/XhDijuGw
https://pastebin.com/1vCBNmJ3
https://pastebin.com/UV0cexUB
https://pastebin.com/g20kZvMy
https://pastebin.com/ReWCKsRu
https://pastebin.com/2DqBu66S
https://pastebin.com/sHpef5Y0
https://pastebin.com/MG0LCTFj
https://pastebin.com/uyVevD0V
https://pastebin.com/khmLwJ5q
https://pastebin.com/CSMxg91s
https://asd256421.hatenablog.com/entry/2026/10/15/121224
https://asd256421.hatenablog.com/entry/2026/10/15/121157
https://asd256421.hatenablog.com/entry/2026/10/15/121134
https://asd256421.hatenablog.com/entry/2026/10/15/121110
https://asd256421.hatenablog.com/entry/2026/10/15/121044
https://asd256421.hatenablog.com/entry/2026/10/15/121018
https://asd256421.hatenablog.com/entry/2026/10/15/120952
https://asd256421.hatenablog.com/entry/2026/10/15/120926
https://asd256421.hatenablog.com/entry/2026/10/15/120904
https://asd256421.hatenablog.com/entry/2026/10/15/120840
https://asd256421.hatenablog.com/entry/2026/10/15/120814
https://asd256421.hatenablog.com/entry/2026/10/15/120749
https://asd256421.hatenablog.com/entry/2026/10/15/120726
https://asd256421.hatenablog.com/entry/2026/10/15/120701
https://asd256421.hatenablog.com/entry/2026/10/15/120637
https://asd256421.hatenablog.com/entry/2026/10/15/120613
https://asd256421.hatenablog.com/entry/2026/10/15/120550
https://asd256421.hatenablog.com/entry/2026/10/15/120526
https://asd256421.hatenablog.com/entry/2026/10/15/120502
https://asd256421.hatenablog.com/entry/2026/10/15/120437
https://asd256421.hatenablog.com/entry/2026/10/15/120410
https://asd256421.hatenablog.com/entry/2026/10/15/120344
https://asd256421.hatenablog.com/entry/2026/10/15/120317
https://asd256421.hatenablog.com/entry/2026/10/15/120254
https://asd256421.hatenablog.com/entry/2026/10/15/120231
https://asd256421.hatenablog.com/entry/2026/10/15/120206
https://asd256421.hatenablog.com/entry/2026/10/15/120140
https://asd256421.hatenablog.com/entry/2026/10/15/120116
https://asd256421.hatenablog.com/entry/2026/10/15/120049
https://asd256421.hatenablog.com/entry/2026/10/15/120025
https://asd256421.hatenablog.com/entry/2026/10/15/115958
https://asd256421.hatenablog.com/entry/2026/10/15/115931
https://asd256421.hatenablog.com/entry/2026/10/15/115904
https://asd256421.hatenablog.com/entry/2026/10/15/115842
https://asd256421.hatenablog.com/entry/2026/10/15/115819
https://asd256421.hatenablog.com/entry/2026/10/15/115754
https://asd256421.hatenablog.com/entry/2026/10/15/115729
https://asd256421.hatenablog.com/entry/2026/10/15/115703
https://asd256421.hatenablog.com/entry/2026/10/15/115637
https://asd256421.hatenablog.com/entry/2026/10/15/115614
https://asd256421.hatenablog.com/entry/2026/10/15/115549
https://asd256421.hatenablog.com/entry/2026/10/15/115526
https://asd256421.hatenablog.com/entry/2026/10/15/115500
https://asd256421.hatenablog.com/entry/2026/10/15/115434
https://asd256421.hatenablog.com/entry/2026/10/15/115410
https://asd256421.hatenablog.com/entry/2026/10/15/115347
https://asd256421.hatenablog.com/entry/2026/10/15/115320
https://asd256421.hatenablog.com/entry/2026/10/15/115253
https://asd256421.hatenablog.com/entry/2026/10/15/115229
https://asd256421.hatenablog.com/entry/2026/10/15/110000
https://asd256421.hatenablog.com/entry/2026/10/15/105936
https://asd256421.hatenablog.com/entry/2026/10/15/105914
https://asd256421.hatenablog.com/entry/2026/10/15/105846
https://asd256421.hatenablog.com/entry/2026/10/15/105823
https://asd256421.hatenablog.com/entry/2026/10/15/105756
https://asd256421.hatenablog.com/entry/2026/10/15/105730
https://asd256421.hatenablog.com/entry/2026/10/15/105708
https://asd256421.hatenablog.com/entry/2026/10/15/105645
https://asd256421.hatenablog.com/entry/2026/10/15/105623
https://asd256421.hatenablog.com/entry/2026/10/15/105556
https://asd256421.hatenablog.com/entry/2026/10/15/105533
https://asd256421.hatenablog.com/entry/2026/10/15/105510
https://asd256421.hatenablog.com/entry/2026/10/15/105446
https://asd256421.hatenablog.com/entry/2026/10/15/105419
https://asd256421.hatenablog.com/entry/2026/10/15/105354
https://asd256421.hatenablog.com/entry/2026/10/15/105331
https://asd256421.hatenablog.com/entry/2026/10/15/105308
https://asd256421.hatenablog.com/entry/2026/10/15/105242
https://asd256421.hatenablog.com/entry/2026/10/15/105218
https://asd256421.hatenablog.com/entry/2026/10/15/105151
https://asd256421.hatenablog.com/entry/2026/10/15/105127
https://asd256421.hatenablog.com/entry/2026/10/15/105102
https://asd256421.hatenablog.com/entry/2026/10/15/105040
https://asd256421.hatenablog.com/entry/2026/10/15/105012
https://asd256421.hatenablog.com/entry/2026/10/15/104949
https://asd256421.hatenablog.com/entry/2026/10/15/104924
https://asd256421.hatenablog.com/entry/2026/10/15/104900
https://asd256421.hatenablog.com/entry/2026/10/15/104834
https://asd256421.hatenablog.com/entry/2026/10/15/104808
https://asd256421.hatenablog.com/entry/2026/10/15/104740
https://asd256421.hatenablog.com/entry/2026/10/15/104714
https://asd256421.hatenablog.com/entry/2026/10/15/104652
https://asd256421.hatenablog.com/entry/2026/10/15/104627
https://asd256421.hatenablog.com/entry/2026/10/15/104600
https://asd256421.hatenablog.com/entry/2026/10/15/104536
https://asd256421.hatenablog.com/entry/2026/10/15/104509
https://asd256421.hatenablog.com/entry/2026/10/15/104446
https://asd256421.hatenablog.com/entry/2026/10/15/104423
https://asd256421.hatenablog.com/entry/2026/10/15/104401
https://asd256421.hatenablog.com/entry/2026/10/15/104337
https://asd256421.hatenablog.com/entry/2026/10/15/104310
https://asd256421.hatenablog.com/entry/2026/10/15/104246
https://asd256421.hatenablog.com/entry/2026/10/15/104223
https://asd256421.hatenablog.com/entry/2026/10/15/104156
https://asd256421.hatenablog.com/entry/2026/10/15/104132
https://asd256421.hatenablog.com/entry/2026/10/15/104105
https://asd256421.hatenablog.com/entry/2026/10/15/104039
https://asd256421.hatenablog.com/entry/2026/10/15/104016
https://asd256421.hatenablog.com/entry/2026/10/15/103557
https://asd256421.hatenablog.com/entry/2026/10/15/103519
https://asd256421.hatenablog.com/entry/2026/10/13/201535
https://asd256421.hatenablog.com/entry/2026/10/13/201512
https://asd256421.hatenablog.com/entry/2026/10/13/201445
https://asd256421.hatenablog.com/entry/2026/10/13/201421
https://asd256421.hatenablog.com/entry/2026/10/13/201356
https://asd256421.hatenablog.com/entry/2026/10/13/201332
https://asd256421.hatenablog.com/entry/2026/10/13/201308
https://asd256421.hatenablog.com/entry/2026/10/13/201157
https://asd256421.hatenablog.com/entry/2026/10/13/200605
https://asd256421.hatenablog.com/entry/2026/10/13/201027

0 赞 关注 分享

要回复文章请先登录或注册