轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 微信小程序 查看主题

阿东入门系列《二》轮播,Tab分页

发布者: home_star | 发布时间: 2018-1-24 20:15| 查看数: 6166| 评论数: 1|帖子模式

一:Tab分页

1.1 组件 tabBar

微信小程序提供了一个组件tabBar用来实现多tab分页功能。如果我们的小程序是一个多 tab 应用(客户端窗口的底部有tab栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。

微信小程序提供了一个组件tabBar用来实现多tab分页功能。如果我们的小程序是一个多 tab 应用(客户端窗口的底部有tab栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

1.2 配置位置

微信小程序中认为整个页面分为 导航栏navigationBar,tab栏 tabBar 和 页面区域(就是在pages中配置的页面显示区域),所以tabBar的配置位于全局配置文件app.json 文件中。

  1. "tabBar": {
  2. "color": "#a9a9a9",
  3. "selectedColor": "#1f1f1f",
  4. "backgroundColor": "#fefefe",
  5. "borderStyle": "white",
  6. "list": [
  7. {
  8. "pagePath": "pages/main/main",
  9. "text": "首页",
  10. "iconPath": "image/icon_home.png",
  11. "selectedIconPath": "image/icon_home_select.png"
  12. },
  13. {
  14. "pagePath": "pages/aboutUs/aboutUs",
  15. "text": "关于我们",
  16. "iconPath": "image/icon_person.png",
  17. "selectedIconPath": "image/icon_person_select.png"
  18. }
  19. ] }


1.3 icon图标

对于每一个tab的icon,需要放置于本地工程内,经测试此处不支持网络图片。需在工程根目录下创建用于存放图片的文件夹,文件名随意,使用时需指定其相对路径。(作者实际操作过程中,没有在IDE中找到在image文件夹中放入图片文件的方法,我是在本地文件中操作的,不知道是功能太隐蔽还是我没有找到,如果有知道的望留言告知)

  1. {
  2. "pagePath": "pages/main/main",
  3. "text": "首页",
  4. "iconPath": "image/icon_home.png",
  5. "selectedIconPath":"image/icon_home_select.png"
  6. }
二:轮播

组件 swiper

微信小程序原生就提供了轮播控件,在微信的文档中叫做 滑块视图容器。只需要简单的配置就可以实现轮播的效果。

上图是微信开发文档中给出的,但是笔者发现还有一个属性 vertical ,其值接受Boolean型变量,默认值为false。

当不设置 vertical 属性,或者 vertical=”false” 时,指示点在组件下部,图片轮播从左至右,效果如下:

当设置 vertical=”true” 时,指示点在组件右部,图片轮播从下至上,效果如下:

注意: swiper是一个容器类视图,但是其中只能放置组件,如放置其他节点,会被自动删除。

swiper-item

仅可放置在 swiper 组件中,宽高自动设置为100%。代表轮播中一帧的页面,通常以循环的方式加载到页面中。

代码如下:

  1. <!--main.wxml-->
  2. <view>
  3. <swiper class="swiper_box" indicator-dots="{{indicatorDots}}" vertical="{{vertical}}"
  4. autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange">
  5. <block wx:for="{{images}}">
  6. <swiper-item>
  7. <image src="{{item.picurl}}" class="slide-image"/>
  8. </swiper-item>
  9. </block>
  10. </swiper>
  11. </view>

  1. //main.js
  2. //获取应用实例
  3. var app = getApp()
  4. Page({
  5. data: {
  6. indicatorDots: true,
  7. vertical: true,
  8. autoplay: true,
  9. interval: 3000,
  10. duration: 1000,
  11. loadingHidden: false // loading
  12. },
  13. //事件处理函数
  14. swiperchange: function(e) {
  15. // 此处写 轮播 改变时会触发的 change 事件
  16. },
  17. onLoad: function() {
  18. console.log('onLoad')
  19. var that = this
  20. //sliderList
  21. wx.request({
  22. url: ',
  23. method: 'GET',
  24. data: {},
  25. header: {
  26. 'Accept': 'application/json'
  27. },
  28. success: function(res) {
  29. that.setData({
  30. images: res.data
  31. })
  32. }
  33. })
  34. }
  35. })


item单击事件

在 swiper-item 上绑定事件,通过 data 自定义标签绑定数据。然后在function中通过event拿到。

  1. <!--main.wxml-->
  2. <view>
  3. <swiper class="swiper_box" indicator-dots="{{indicatorDots}}" vertical="{{vertical}}"
  4. autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange">
  5. <block wx:for="{{images}}">
  6. <swiper-item bindtap="itemclick" data-id="{{item.id}}" data-name="{{item.name}}">
  7. <image src="{{item.picurl}}" class="slide-image"/>
  8. </swiper-item>
  9. </block>
  10. </swiper>
  11. </view>

注意代码中的 data-id 和 data-name 均为自定义标签,然后可以在绑定事件的event中通过 id 和 name 拿到。

  1. // 轮播item点击事件
  2. itemclick: function(e) {
  3. wx.showToast({
  4. title: e.currentTarget.dataset.id + "",
  5. icon: 'success',
  6. duration: 2000
  7. })
  8. }

注意在绑定的function中可以通过event拿到对应的数据。如:e.currentTarget.dataset.id 对应wxml中的data-id

当然,还有另一种办法。不需要绑定事件,通过在每一个的 swiper-item 外面包上一个 a 标签,以超链接的方式跳转页面。

最新评论

jackie2334 发表于 2022-5-14 09:29
音源下载网

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表