热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序swiper实现句子控app首页滑动卡片

微信小程序swiper实现句子控app首页滑动卡片引言:最近看到句子控APP首页的效果很清新,可是发现他的微信小程序端没有实现这个功能,我看了一下难度不大,于是尝试着去实现。实现效
微信小程序swiper实现 句子控app首页滑动卡片

引言:最近看到句子控APP首页的效果很清新,可是发现他的微信小程序端没有实现这个功能,我看了一下难度不大,于是尝试着去实现。

实现效果如下:



1、定义一个yiyancard自定义组件,在根目录下新建一个components文件夹并在其内部新建一个yiyancard文件夹。


2、在pages文件夹下新建一个home页面


3、在home页面的json引入yiyancard组件,并在wxml中使用

index.json

{

"usingComponents": {

"s-yiyancard": "../../components/yiyancard/index"
}

}

index.wxml






4、编写yiyancard相关代码

index.js

Page({
data: {
cardCur: 0,

swiperList: [{

id: 0,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/6.JPG?sign=39d14c3902ca802c5bbdca9487c4dfc8&t=1612537023',

yiyan: '没有无聊的人生,只有无聊的人生态度',

form: '刘瑜',

iflike: "false"

}, {

id: 1,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/1.JPG?sign=6a578b89d06a74141a01b35b26684e04&t=1612536951',

yiyan: '没有任何一种逃避能得到赞赏,喜欢就去追,饿了就吃饭,管他是失败或是发胖',

form: '',

iflike: "false"

}, {

id: 2,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/2.JPG?sign=42c68e97e5fcd277e42bdc476a94cdb4&t=1612536964',

yiyan: '万物皆有裂痕,那是光进来的地方',

iflike: "false"
}, {

id: 3,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/3.JPG?sign=d607ee45937f227f8ae5fba4e9f846f4&t=1612536974',

yiyan: '不听命于自己者,就要受命于他人',
form: '尼采',

iflike: "false"

}, {

id: 4,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/4.JPG?sign=4c986f27559352bb5d9b42a96851ab22&t=1612536983',

yiyan: '我从不曾崩溃瓦解,因为我从不曾完好无缺',
form: '安迪·沃霍尔',

iflike: "false"

}, {

id: 5,

type: 'image',

url: 'https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/5.JPG?sign=22d43fff1c66594770c1c2b10cd8403c&t=1612537004',

yiyan: '总有人找你这可小星球,了解你的温柔和璀璨,即使旁边的宇宙再浪漫',
form: '',

iflike: "false"

}, {

ifend: true

}],

},

onLoad() {

this.towerSwiper('swiperList');

// 初始化towerSwiper 传已有的数组名即可

},

DotStyle(e) {

this.setData({

DotStyle: e.detail.value

})

},

// cardSwiper

cardSwiper(e) {

this.setData({

cardCur: e.detail.current

})

},

// towerSwiper

// 初始化towerSwiper

towerSwiper(name) {

let list = this.data[name];

for (let i = 0; i
list[i].zIndex = parseInt(list.length / 2) + 1 - Math.abs(i - parseInt(list.length / 2))

list[i].mLeft = i - parseInt(list.length / 2)

}

this.setData({

swiperList: list

})

},

// towerSwiper触摸开始

towerStart(e) {

this.setData({

towerStart: e.touches[0].pageX

})

},

// towerSwiper计算方向

towerMove(e) {

this.setData({

direction: e.touches[0].pageX - this.data.towerStart > 0 ? 'right' : 'left'

})

},

// towerSwiper计算滚动

towerEnd(e) {

let direction = this.data.direction;

let list = this.data.swiperList;

if (direction == 'right') {

let mLeft = list[0].mLeft;

let zIndex = list[0].zIndex;

for (let i = 1; i
list[i - 1].mLeft = list[i].mLeft

list[i - 1].zIndex = list[i].zIndex

}

list[list.length - 1].mLeft = mLeft;

list[list.length - 1].zIndex = zIndex;

this.setData({

swiperList: list

})

} else {

let mLeft = list[list.length - 1].mLeft;

let zIndex = list[list.length - 1].zIndex;

for (let i = list.length - 1; i > 0; i--) {

list[i].mLeft = list[i - 1].mLeft

list[i].zIndex = list[i - 1].zIndex

}

list[0].mLeft = mLeft;

list[0].zIndex = zIndex;

this.setData({

swiperList: list

})

}

},
// 喜欢图标点击改变

like: function (event) {

const that = this

let likeid = event.currentTarget.dataset.likeid

var a = `swiperList[${likeid}].iflike`

var b =`that.data.swiperList[${likeid}].iflike`

console.log(a)

console.log(b)
if (that.data.swiperList[likeid].iflike=== "false") {

that.setData({

[a] : "true",

})

} else if (that.data.swiperList[likeid].iflike=== "true") {

that.setData({

[a]: "false",

})

}
console.log(that.data.swiperList[likeid].iflike)

}

})

index.json

{

"component": true,

"usingComponents": {}

}











{{item.yiyan}}

- {{item.form}} -











36

























每日十句精选投稿



感谢支持,每天都有不同的收获。如果意犹未尽,可以点击底部按钮查看更多推荐



去发现页查看更多推荐






index.css

/* ==================

轮播

==================== */
.swiper-img {

height: 35% !important;
}
.swiper-item image,

.swiper-item video {

width: 100%;

display: block;

height: 100%;

margin: 0;

pointer-events: none;

}
.card-swiper {
height: 85vh !important;

}
.card-swiper swiper-item {

width: 610rpx !important;

left: 70rpx;

box-sizing: border-box;

padding: 40rpx 0rpx 70rpx;

overflow: initial;

}
.card-swiper swiper-item .swiper-item {

width: 100%;

display: block;

height: 100%;

border-radius: 10rpx;

transform: scale(0.9);

transition: all 0.2s ease-in 0s;

overflow: hidden;

}
.card-swiper swiper-item.cur .swiper-item {

transform: none;

transition: all 0.2s ease-in 0s;

}
swiper {

margin-top: 15rpx !important;

}
.other {

position: relative;
background-color: #ffffff;

display: flex;

/*flex布局方法*/

flex-direction: column;

/*垂直布局*/

align-items: center;

/*水平方向居中*/
box-shadow: 0 6rpx 24rpx rgba(0, 0, 0, 0.08);

position: relative;
}
/* 内容 */

.yiyan-body {

line-height: 46rpx;

letter-spacing: 5rpx;

margin-top: 38rpx;

font-size: 30rpx;

width: 90%;

height: 35%;

margin-left: 5%;

color: #3e3e3e;

}
.yiyan-form {

position: absolute;

bottom: 55px;

display: flex;

flex-direction: column;

align-items: center;

font-size: 25rpx;

color: #999999;

width: 50%;

margin-top: 20%;

margin-left: 25%;
}
/* 底部 */

.bottom-box {

position: absolute;

bottom: 0px;

width: 100%;

height: 80rpx;

display: flex;

flex-direction: row;

}
.juzhong {

display: flex;

justify-content: center;

align-items: center;
}
.icon-img {

width: 30rpx !important;

height: 30rpx !important;

}
.icon-img2 {

width: 30rpx !important;

height: 30rpx !important;

/* margin-top: 5rpx !important; */

}
.like {

display: flex;

justify-content: center;

align-items: center;

width: 27%;

}
.num {

font-size: smaller;

margin-top: 3rpx;

margin-left: 6rpx;

color: #b4b4b4;

}
.liuyan {

width: 27%;

display: flex;

justify-content: center;
align-items: center;

}
.biaoqian {

width: 23%;

display: flex;

justify-content: center;
align-items: center;

}
.zhuanfa {

width: 23%;

display: flex;

justify-content: center;
align-items: center;

}

/* 最后一页 */

.end-title{

width: 60%;

margin-left: 20%;

font-size: 30rpx;

display: flex;

justify-content: center;

align-items: center;

margin-top: 100rpx;

margin-bottom: 100rpx;

}

.end-body{

width: 80%;

margin-left: 10%;

font-size: 27rpx;

color: #a7a7a7;

display: flex;

justify-content: center;

align-items: center;

margin-bottom: 40rpx;

}

.end-bottom{

position: absolute;

width: 70%;

left: 15%;

bottom: 60rpx;

display: flex;

justify-content: center;

align-items: center;

margin-bottom: 40rpx;

color: #7b9fcb;

font-size: 28rpx;

}

编写完以上代码,相关功能就实现了。

注意:为了方便以上data中的数据是直接在js中自定义好的。


微信小程序swiper实现 句子控app首页滑动卡片的相关教程结束。



推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了最长上升子序列问题的一个变种解法,通过记录拐点的位置,将问题拆分为左右两个LIS问题。详细讲解了算法的实现过程,并给出了相应的代码。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
南塘所有的经筒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有