微信小程序左右滑动的实现代码


Posted in Javascript onDecember 15, 2017

左滑 右滑 你不再是一个人

无论你是一个程序猿还是一个程序媛,每天干的事除了coding还是coding,代码不能解决的问题(什么问题自己心里还没点abcd数嘛),探探能帮你解决。最近网上特流行一款交友软件叫探探(据说是yp软件)。作为探探曾经的一名从来只浏览图片但是没有yue过的资深玩家同时又是一位热爱前端的妹子,我决定要仿一下这个app。既然是寄几开发,那还不是寄几说了算,毫无疑问整款APP的主题风格被我改成我最爱的终极少女粉了hhh,下面让我们一起来感受下探探的魅力吧~

项目整体效果

微信小程序左右滑动的实现代码

项目部分功能点解析

主页图片左滑右滑对应按钮变化

微信小程序左右滑动的实现代码

首先我们来聊一下最让我头痛的地方,就是主页面的左右滑动事件并且对应按钮会相应变化,即我左滑一下图片下面的灰色按钮会有相应的动画效果,右滑则对应着图片下面的红色按钮。对于一个刚入小程序坑的妹子来说,没有大神指点不知道要在这里面的逻辑坑还要绕多久才能绕出来。得一高人指点,我才完美滴实现了这个功能。

这里写了三个大的盒子放着图片和文字信息,再将他们放到swiper-item里面,用swiper组件实现整个盒子的左右滑动

<swiper class='swiper-item__content' current="" bindchange="changeswiper">
 <swiper-item class="swip">
  <view class='page__bd_content'> 
   <image class="slide-image" src="http://pic.qqtn.com/up/2017-12/15126388387704237.jpg" mode="scaleToFill"/> 
   <view class="name">K</view>
   <view class="age">♂21</view>
   <view class="conste">金牛座</view>
   <view class="status">文化/教育</view> 
  </view>
 </swiper-item>
</swiper>

盒子下面不是按钮,我是放了两张图片。

<view class="page__ft">
 <image class="notlike {{left?'active':''}}" src="../../images/notlike.png" />
 <image class="like {{right?'active':''}}" src="../../images/like.png" />
 </view>

先给他们写个滑动的时候触发的动画效果

.active {
 animation: active 1s ease;//定义一个叫做active的动画
}
@keyframes active {//补充active动作脚本
 0% {
  transform: scale(0.8);
 }
 50% {
  transform: scale(1.2);
 }
 100% {
  transform: scale(1.0);
 }
}

在page的data里面定义三个变量,将left,right变量绑定到对应图片中

data: {
 left: false ,
 right: false,
 activeIndex: 0
},

在swiper绑定事件中具体判断左右滑动事件

changeswiper: function(e) {
 var index = e.detail.current;//当前所在页面的 index
 if(index > this.data.activeIndex) {//左滑事件判断
  this.setData({
  left: true//若为左滑,left值为true,触发图片动画效果
  })
 } else if(index < this.data.activeIndex) {//右滑事件判断
  this.setData({
  right: true//若为右滑,right值为true,触发图片动画效果
  })
 }
 setTimeout(() => {//每滑动一次,数据发生变化
  this.setData({
  activeIndex: index,
  left:false,
  right:false
  })
 }, 1000);
 },

从本地上传图片

微信小程序左右滑动的实现代码

这个呀查一查小程序开发文档就好了,先在要上传图片的地方的src绑定个数据变量

<image class="addImg" src="{{imgUrl}}" bindtap="uploadImg" />

放入图片默认地址,就是上传图片之前的添加图片

data: {
 imgUrl: '../../images/addImg.png'
 },

通过绑定tap事件将上传的图片地址替换进去

uploadImg: function(e) {
var that = this;
wx.chooseImage({
 count: 1, //上传图片数量
 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  var tempFilePaths = res.tempFilePaths;
  that.setData({
   imgUrl: tempFilePaths
 })
  wx.showToast({//显示上传成功
   title: '上传成功',
   icon: 'success',
   duration: 2000
 })
 }
}),

配对成功列表据通过easy-mock获取后台数据

微信小程序左右滑动的实现代码

block wx:for渲染一个包含多节点的结构块

<swiper-item>
 <view class="swiper-item__content">
  <block wx:for="{{friendsList}}" wx:key="index">
   <view class="weui-tab__content">
    <view class="weui-media-box__hd">
     <image src="{{item.avatar}}" mode="aspectFit"></image>
    </view> 
    <view class="weui-media-box__bd">
     <view class="weui-media-box__nickname">{{item.nickname}}</view>
     <view class="weui-media-box__message">{{item.message}}</view>
    </view>
   </view>
  </block>
 </view>
</swiper-item>

获取后台数据

wx.request({
  url: 'https://www.easy-mock.com/mock/5a23dbf382614c0dc1bebf04/getFriendsList/getFriendsList',
  success: (res) => {
  // console.log(response);
  this.setData({
   friendsList: res.data.data.friendsList
  })
  }
 })

其它差不多就是切页面了,个人原因用不太习惯weui的官方样式,每个页面都是我自己呕心沥血码出来的,所以大家不喜轻点喷哈,还在努力学习当中~~~

总结

以上所述是小编给大家介绍的微信小程序左右滑动的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
拖动布局之保存布局页面cookies篇
Oct 29 Javascript
js获取多个tagname的节点数组
Sep 22 Javascript
javascript中打印当前的时间实现思路及代码
Dec 18 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
React-Router如何进行页面权限管理的方法
Dec 06 Javascript
代码详解Vuejs响应式原理
Dec 20 Javascript
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
简单学习5种处理Vue.js异常的方法
Jun 17 Javascript
浅析JavaScript中的特殊数据类型
Dec 15 #Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 #Javascript
微信小程序使用request网络请求操作实例
Dec 15 #Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 #Javascript
Angular中管道操作符(|)的使用方法
Dec 15 #Javascript
浅谈Vue SPA 首屏加载优化实践
Dec 15 #Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 #Javascript
You might like
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
微信支付开发交易通知实例
2016/07/12 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
js 动态选中下拉框
2009/11/26 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
python获取整个网页源码的方法
2020/08/03 Python
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
冰淇淋开店创业计划书
2014/02/01 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
财务会计自荐信范文
2014/02/21 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫