微信小程序实战之轮播图(3)


Posted in Javascript onApril 17, 2017

轮播图是大部分应用的一个常用的功能,常用于广告投放、产品展示、活动展示等等。

漂亮的轮播图效果可以吸引用户的点击,达到推广产品的作用。

废话少说,下面开始动手。

业务需求:

5个图片轮番播放,可以左右滑动,点击指示点可以切换图片 

重点说明:

由于微信小程序,整个项目编译后的大小不能超过1M

查看做轮播图功能的一张图片大小都已经有100+k了

那么我们可以把图片放在服务器上,发送请求来获取。

index.wxml:

这里使用小程序提供的<swiper>组件
autoplay:自动播放
interval:自动切换时间
duration:滑动动画的时长
current:当前所在的页面
bindchange:current 改变时会触发 change 事件
由于<swiper>组件提供的指示点样式比较单一,另外再自定义指示点的样式

<view class="recommend" > 
 <view class="swiper-container"> 
  <swiper autoplay="auto" interval="5000" duration="500" current="{{swiperCurrent}}" bindchange="swiperChange" class="swiper"> 
   <block wx:for="{{slider}}" wx:key="unique"> 
    <swiper-item data-id="{{item.id}}" data-url="{{item.linkUrl}}"> 
     <image src="{{item.picUrl}}" class="img"></image> 
    </swiper-item> 
   </block> 
  </swiper> 
  <view class="dots"> 
   <block wx:for="{{slider}}" wx:key="unique"> 
    <view class="dot{{index == swiperCurrent ? ' active' : ''}}" bindtap="chuangEvent" id="{{index}}">{{index+1}}</view> 
   </block> 
  </view> 
 </view> 
</view>

index.wxss:

.swiper-container{ 
 position: relative; 
} 
.swiper-container .swiper{ 
 height: 300rpx; 
} 
.swiper-container .swiper .img{ 
 width: 100%; 
 height: 100%; 
} 
.swiper-container .dots{ 
 position: absolute; 
 right: 40rpx; 
 bottom: 20rpx; 
 display: flex; 
 justify-content: center; 
} 
.swiper-container .dots .dot{ 
 margin: 0 10rpx; 
 width: 28rpx; 
 height: 28rpx; 
 background: #fff; 
 border-radius: 50%; 
 transition: all .6s; 
 font: 300 18rpx/28rpx "microsoft yahei"; 
 text-align: center; 
} 
.swiper-container .dots .dot.active{ 
 background: #f80; 
 color:#fff; 
}

 index.js:

//导入js 
var util = require('../../utils/util.js') 
Page({ 
 data: { 
  slider: [], 
  swiperCurrent: 0 
 }, 
 onLoad: function () { 
  var that = this; 
//网络访问,获取轮播图的图片 
  util.getRecommend(function(data){ 
   that.setData({ 
    slider: data.data.slider 
   }) 
  });  
 }, 
 //轮播图的切换事件 
 swiperChange: function(e){ 
//只要把切换后当前的index传给<swiper>组件的current属性即可 
  this.setData({ 
   swiperCurrent: e.detail.current 
  }) 
 }, 
 //点击指示点切换 
 chuangEvent: function(e){ 
  this.setData({ 
   swiperCurrent: e.currentTarget.id 
  }) 
 } 
})

utils.js:

//网络访问 
function getRecommend(callback) { 
 wx.request({ 
  url: 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg', 
  data: { 
   g_tk: 5381, 
   uin: 0, 
   format: 'json', 
   inCharset: 'utf-8', 
   outCharset: 'utf-8', 
   notice: 0, 
   platform: 'h5', 
   needNewCode: 1, 
   _: Date.now() 
  }, 
  method: 'GET', 
  header: {'content-Type': 'application/json'}, 
  success: function(res){ 
   if(res.statusCode == 200){ 
    callback(res.data); 
   } 
  } 
 }) 
} 
 
module.exports = { 
 getRecommend: getRecommend 
}

运行:

微信小程序实战之轮播图(3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
发布一个基于javascript的动画类 Fx.js
Nov 05 Javascript
javascript获取作用在元素上面的样式属性代码
Sep 20 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
jQuery按需加载轮播图(web前端性能优化)
Feb 17 Javascript
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
vue2实现数据请求显示loading图
Nov 28 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 #Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 #Javascript
微信小程序教程系列之新建页面(4)
Apr 17 #Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 #Javascript
微信小程序商城项目之购物数量加减(3)
Apr 17 #Javascript
微信小程序商城项目之商品属性分类(4)
Apr 17 #Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 #Javascript
You might like
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
jquery实现数字输入框
2017/02/22 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
webpack源码之loader机制详解
2018/04/06 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
tensorflow更改变量的值实例
2018/07/30 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
python实现坦克大战
2020/04/24 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
2014财务人员自我评价范文
2014/09/21 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记