Swiper组件的基本使用

423 阅读6分钟

介绍

滑块视图容器,提供子组件滑动轮播显示的能力。

使用场景

当想要构建轮播图时,可以使用此组件,多用于电商展示商品或者网站展示海报

淘宝轮播图展示 00_00_00-00_00_30.gif

基本用法

Swiper() {
  // 放置想要轮播的内容 
  // swiper是容器组件,可以放置想要放置的任意子组件
  // 也可以给子组件设置尺寸以撑开swiper组件
}
// 设置swiper组件的尺寸,子组件会自动适应拉伸至相同尺寸
.width('100%')
.height(100)

接口信息

参数

参数名参数类型必填参数描述
controllerSwiperController给组件绑定一个控制器,用来控制组件翻页。

常用属性

autoPlay

autoPlay(value: boolean)

设置子组件是否自动播放。

loop为false时,自动轮播到最后一页时停止轮播。手势切换后不是最后一页时继续播放。

参数:

参数名类型必填说明
valueboolean子组件是否自动播放。

默认值:false

interval

interval(value: number)

设置使用自动播放时播放的时间间隔。

参数:

参数名类型必填说明
valuenumber自动播放时播放的时间间隔。

默认值:3000

单位:毫秒

indicator

indicator(value: DotIndicator | DigitIndicator | boolean)

设置可选导航点指示器样式。

参数:

参数名类型必填说明
valueDotIndicator10+ | DigitIndicator10+ | boolean可选导航点指示器样式。

- DotIndicator:圆点指示器样式。

- DigitIndicator:数字指示器样式。

- boolean:是否启用导航点指示器。设置为true启用,false不启用。

默认值:true

默认类型:DotIndicator

Indicator10+对象说明

设置导航点距离Swiper组件距离。

属性

参数名参数类型必填项参数描述
leftLength设置导航点距离Swiper组件左边的距离。

默认值:0

单位:vp
topLength设置导航点距离Swiper组件顶部的距离。

默认值:0

单位:vp
rightLength设置导航点距离Swiper组件右边的距离。

默认值:0

单位:vp
bottomLength设置导航点距离Swiper组件底部的距离。

默认值:0

单位:vp
start12+LengthMetrics在RTL模式下为导航点距离Swiper组件右边的距离,在LTR模式下为导航点距离Swiper组件左边的距离

默认值:0

单位:vp

元服务API: 从API version 12开始,该接口支持在元服务中使用。
end12+LengthMetrics在RTL模式下为导航点距离Swiper组件左边的距离,在LTR模式下为导航点距离Swiper组件右边的距离。

默认值:0

单位:vp

元服务API: 从API version 12开始,该接口支持在元服务中使用。

dot

static dot()

返回一个DotIndicator对象。

卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

digit

static digit()

返回一个DigitIndicator对象。

DotIndicator10+对象说明

圆点指示器属性及功能继承自Indicator

卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数名参数类型必填项参数描述
itemWidthLength设置Swiper组件圆点导航指示器的宽,不支持设置百分比。

默认值:6

单位:vp
itemHeightLength设置Swiper组件圆点导航指示器的高,不支持设置百分比。

默认值:6

单位:vp
selectedItemWidthLength设置选中Swiper组件圆点导航指示器的宽,不支持设置百分比。

默认值:12

单位:vp
selectedItemHeightLength设置选中Swiper组件圆点导航指示器的高,不支持设置百分比。

默认值:6

单位:vp
maskboolean设置是否显示Swiper组件圆点导航指示器的蒙版样式。

默认值:false
colorResourceColor设置Swiper组件圆点导航指示器的颜色。

默认值:'#182431'(10%透明度)
selectedColorResourceColor设置选中Swiper组件圆点导航指示器的颜色。

默认值:'#007DFF'
maxDisplayCount12+number设置圆点导航点指示器样式下,导航点显示个数最大值,当实际导航点个数大于最大导航点个数时,会生效超长效果样式,样式如示例5所示。

默认值:这个属性没有默认值,如果设置异常值那等同于没有超长显示效果。

取值范围:6-9

说明:

1、超长显示场景,目前暂时不支持交互功能(包括:手指点击拖拽、鼠标操作等)。

2、在超长显示场景下,中间页面对应的选中导航点的位置,并不是完全固定的,取决于之前的翻页操作序列。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

DigitIndicator10+对象说明

数字指示器属性及功能继承自Indicator

参数名参数类型必填项参数描述
fontColorResourceColor设置Swiper组件数字导航点的字体颜色。

默认值:'#ff182431'
selectedFontColorResourceColor设置选中Swiper组件数字导航点的字体颜色。

默认值:'#ff182431'
digitFont{

size?:Length

weight?:number | FontWeight | string

}
设置Swiper组件数字导航点的字体样式:

- size:数字导航点指示器的字体大小,不支持设置百分比。

默认值:14vp

- weight:数字导航点指示器的字重。

默认值:FontWeight.Normal
selectedDigitFont{

size?:Length

weight?:number | FontWeight | string

}
设置选中Swiper组件数字导航点的字体样式:

- size:数字导航点选中指示器的字体大小,不支持设置百分比。

默认值:14vp

- weight:数字导航点选中指示器的字重。

默认值:FontWeight.Normal

案例

参考代码:

@Entry  
@Component  
struct Index {  
  
  //创建数组存放图片地址  
  imgs: string[]=[  
    'app.media.swi_01',  
    'app.media.swi_02',  
    'app.media.swi_03',  
    'app.media.swi_04',  
    'app.media.swi_05',  
    'app.media.swi_06'  
  ]  
  
  build() {  
    Column() {  
      Swiper(){  
        //使用ForEach循环遍历组件  
        ForEach(this.imgs, (item: string)=>{  
          Image($r(item))  
        })  
  
      }  
        .width(323)  
        .height(410)  
        .autoPlay(true) //开启自动播放 
        //.loop()属性的默认值是循环播放,可以省略不写  
        .interval(1000) //设置使用自动播放时播放的时间间隔 默认值是3000毫秒  
        //设置可选导航点指示器样式。  
        .indicator(DotIndicator.dot() //圆点指示器的原点样式  
          .itemWidth(10) //普通原点宽度  
          .itemHeight(10) //普通原点高度  
          .selectedItemWidth(20) //被选中原点宽度  
          .selectedItemHeight(10) //被选中原点高度  
          .color(Color.Gray) //普通原点颜色  
          .selectedColor(Color.White) //被选中原点颜色  
        )  
  
    }  
    .height('100%')  
    .width('100%')  
    .backgroundColor(Color.Pink)  
  }  
}