![微信小程序开发入门与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/713/920713/b_920713.jpg)
4.2 swiper组件
本小节,我们来学习小程序提供的滑动视图容器——swiper组件,在post.wxml中加入以下代码:
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P72_56688.jpg?sign=1738864386-MRNFOFOMYzUq3hgklUr3YQilhojpwwld-0-1c2184998bd82b095d0964f5e4957200)
最外层的<view></view>将作为整个页面的容器,在view的内部,我们加入了一个swiper组件。swiper组件主要由多个swiper-item组成,可以定义任意多个swiper-item。
同时,需要注意的是,swiper组件的直接子元素只可以是swiper-item,如果放置其他组件,则会被自动删除。但swiper-item下是可以放置其他组件或者元素的。
swiper-item元素仅仅只是一个容器,如果要显示内容,需要在swiper-item容器下再添加元素内容。如代码清单4-2所显示的一样,我们在每个swiper-item内都加入了一个image组件,用来显示UI效果图中的轮播图片,图片路径请根据自己项目的实际情况做出相应的修改。
添加完代码后,保存一下项目看看结果,如图4-4所示。
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P73_41678.jpg?sign=1738864386-gdZXT0jnTOoW4Kbd4q9xzSq1mtvaEVeJ-0-703aa1b3d66075184081eb0b88a12082)
图4-4 添加swiper组件后的UI效果
swiper组件的第一个swiper-item元素图片已经显示出来了。在动手设置swiper组件的样式前,首先在post.wxss文件内,将swiper组件的高度和高度设置好。
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P73_56689.jpg?sign=1738864386-xIM0UqLyyMv8tSn8MvKW3ihaqlDPXn1l-0-1a0ebec272f797b142d2661376c71d32)
添加完代码后,保存预览,发现图片的显示尺寸依然不正确。宽度没有呈现100%,高度也不是期望的600rpx。还需要对image组件设置同样的样式,在post.wxss中添加image组件的样式,添加完成后的页面代码如代码清单4-4。
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P73_56690.jpg?sign=1738864386-cQBoYjfDXmqdNuUKFswTNw6A2jrn0yUj-0-a9628acc335f2f88bf15ad9dac8c3888)
此时再次预览小程序,发现样式已经符合预期的效果了,如图4-5所示。
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P74_41702.jpg?sign=1738864386-FkRlNJtNQkt5sY9E9cSP6Y2UuLyYz8x5-0-93d868e80fab2a5f48b43fa3f2d490cd)
图4-5 同时设置swiper和image样式后的效果
这里需要同时设置swiper组件和image组件的高宽,才能达到预期的效果。如果只设置image组件的高度同样是不可以的,读者可以把swiper组件的样式注释掉,看看只对image设置样式的结果。
要实现轮播效果,还要为swiper组件添加一些属性,分别是:indicator-dots、autoplay、interval,如代码清单4-5所示。
![](https://epubservercos.yuewen.com/BA16FB/10080941604402901/epubprivate/OEBPS/Images/Figure-P74_56691.jpg?sign=1738864386-pgmqcTobSySH5obRb4vLz5snIg8rO83H-0-44daaae5fe2c1cd4186cb8e9f933608d)
保存后预览一下效果。图片开始了轮播,每隔5秒钟更换一张。同时swiper组件上出现了3个小圆点,用来指示当前图片。
简单介绍一下这3个属性。
• indicator-dots
Boolean类型。用来指示是否显示面板指示点(上文提到的3个小圆点就是面板指示点,默认为false。
• autoplay
Boolean类型。用来决定是否自动播放,默认为false。
• interval
Number类型。用来设置swiper-item的切换时间间隔,默认为5000毫秒。
除了自动切换图片,swiper组件还可以通过拖动图片来进行切换,也可以通过点击面板指示点来切换。
官方在0.11.12210版本中为swiper组件新增了一个circular属性,这个属性可以使轮播图循环滚动。如果circular为false,那么当swiper组件滚动到第三张图片后就无法继续滚动了;但如果增加一个circular为true的属性,则当swiper组件滚动到第三张图片后,会继续向第一张图片滚动,从而形成循环滚动。
swiper组件的属性使用方式都比较简单,更多属性请参考官方API文档。