微信小程序非swiper组件实现的自定义伪3D轮播图效果示例


Posted in Javascript onDecember 11, 2018

本文实例讲述了微信小程序非swiper组件实现的自定义伪3D轮播图效果。分享给大家供大家参考,具体如下:

效果如下:

微信小程序非swiper组件实现的自定义伪3D轮播图效果示例

我用了很笨的方法实现的,大致就是:

1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一个设置到右边,后面所有设置到最右边

2.当前点击的div(view)如果前面无内容,即第一个,那么,当前div(view)设置到中间,后面一个设置到右边,后面所有设置到最右边

3.当前点击的div(view)如果后面无内容,即最后一个,那么,当前div(view)设置到中间,前面一个设置到左边,前面所有设置到最左边

1.html

<view class='idx-content'>
 <view class='idx-swiper'>
  <view class='idx-cswp {{item.swpClass}}'
    wx:for="{{swiperList}}" wx:key=""
    bindtap="swpBtn"
    data-index="{{index}}">
   <image src='{{item.imgsrc}}' mode='widthFix'></image>
   <view class='swp-title' hidden="{{item.swpClass!=='swp-center'}}">
    <view class='swp-btime'>{{item.time}}</view>
    <view class='swp-bname'>{{item.bname}}</view>
   </view>
  </view>
 </view>
</view>

注:swp-title是标题,用hidden替代wx:if是因为会频繁切换。

2.wxss

.idx-content {
 overflow: hidden;
 padding: 0 40rpx;
}
.idx-content .idx-swiper {
 position: relative;
 margin: 40rpx 0;
 padding-bottom: 100%;
}
.idx-content .idx-swiper .idx-cswp {
 width: 70%;
 height: 100%;
 position: absolute;
 top: 0;
 border-radius: 6px;
}
.idx-content .idx-swiper .idx-cswp image {
 width: 100%;
 max-height: 600rpx;
}
.idx-content .idx-swiper .idx-cswp .swp-title .swp-btime {
 text-align: center;
 font-size: 28rpx;
}
.idx-content .idx-swiper .idx-cswp .swp-title .swp-bname {
 text-align: center;
 font-size: 24rpx;
}
.swp-left {/*左边样式*/
 transition: all .3s ease;
 transform: scale(0.8);
 left: -55%;
}
.swp-center {/*中间样式*/
 left: 15%;
 transition: all .3s ease;
 transform: scale(1);
}
.swp-right {/*右边样式*/
 transition: all .3s ease;
 transform: scale(0.8);
 left: 85%;
}
.swp-rightNo {/*最右边样式*/
 transition: all .3s ease;
 left: 150%;
}
.swp-leftNo {/*最左边样式*/
 transition: all .3s ease;
 left: -150%;
}

3.js

Page({
 data:{
  swiperList: [{//除了1,2之外,其它的swpClass都是swp-rightNo
   aurl:"../start/start",
   swpClass:"swp-center",
   time:"2018年3月下11",
   bname:"2018全球十大突破技术11",
   imgsrc:"../../public/img/swiper.png"
  }, {
   aurl:"#",
   swpClass:"swp-right",
   time: "2018年3月下22",
   bname: "2018全球十大突破技术22",
    imgsrc: "../../public/img/swiper2.png"
 }, {
  aurl:"#",
  swpClass:"swp-rightNo",
  time: "2018年3月下33",
  bname: "2018全球十大突破技术33",
  imgsrc: "../../public/img/swiper3.png"
 }]
  },
  swpBtn:function(e){
  var swp = this.data.swiperList;
  var max=swp.length;
  var idx=e.currentTarget.dataset.index;
  var prev = swp[idx-1];//前一个
  var next = swp[idx+1];//后一个
  var curView=swp[idx];//当前
  if (curView.swpClass ==='swp-center'){//如果当前是在中间的,即可跳转
   wx.navigateTo({
    url: curView.aurl,
   })
  }
  if(prev){//如果当前的前面有
   if (next) {//当前的后面有
    next.swpClass = "swp-right";
   }
   prev.swpClass ="swp-left";
   curView.swpClass = "swp-center";
   for (var i =0; i < idx; i++) { //当前前一个的前面所有
    swp[i].swpClass = 'swp-leftNo'
   }
  }
  if(next){//如果当前的后面有
   if(prev){//当前的前面有
    prev.swpClass = "swp-left";
   }
   curView.swpClass = "swp-center";
   next.swpClass = "swp-right";
   for (var i = (idx + 2); i < max; i++) {//当前后一个的后面所有
    swp[i].swpClass = 'swp-rightNo'
   }
  }else{
   prev.swpClass = "swp-left";
   curView.swpClass = "swp-center";
  }
  this.setData({
   swiperList: swp
  })
 },
})

如果要实现滑动切换,可用 bindtouchstartbindtouchend 来实现。 思路大概是滑动了一定距离之后就添加class。

还有一篇更简单的:用swiper来实现的3d轮播

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
jQuery UI AutoComplete 自动完成使用小记
Aug 21 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
vue项目引入ts步骤(小结)
Oct 31 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 #Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 #jQuery
如何让node运行es6模块文件及其原理详解
Dec 11 #Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 #jQuery
详解react阻止无效重渲染的多种方式
Dec 11 #Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 #jQuery
利用jsonp解决js读取本地json跨域的问题
Dec 11 #Javascript
You might like
php实现的单一入口应用程序实例分析
2015/09/23 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
js禁止表单重复提交
2017/08/29 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Python中用format函数格式化字符串的用法
2015/04/08 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
numpy.random模块用法总结
2019/05/27 Python
python 标准差计算的实现(std)
2019/07/29 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
为什么python比较流行
2020/06/19 Python
C#基础面试题
2016/10/17 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
工程类专业自荐信范文
2014/03/09 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
热血教师观后感
2015/06/10 职场文书
活动简报范文
2015/07/22 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server