微信小程序实战-03翻页时钟-3

微信小程序实战系列

  • 《微信小程序实战-01翻页时钟-1》
  • 《微信小程序实战-02翻页时钟-2》

文章目录

  • 微信小程序实战系列
  • 前言
  • 动态翻页效果实现
    • clock.wxml
    • clock.wxss
    • clock.js
    • 运行效果
  • 总结

前言

本文继续完成最后一个部分“动态翻页效果”。

动态翻页效果实现

clock.wxml

<view class="container">
<view class="clock-container"><view class="flip-container"><block wx:for="{{timeArr}}" wx:for-item="unit" wx:for-index="unitIndex" wx:key="unitIndex"><view class="flip-items"><block wx:for="{{unit.max+1}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="{{['item',(unit.current==index)?'current':'',(unit.current-1==index||index==unit.max&&unit.current==0)?'past':'']}}"><view class="up"><view class="inner">{{index}}</view><view class="shadow"></view></view><view class="down"><view class="inner">{{index}}</view><view class="shadow"></view></view></view></block></view></block></view>
</view>
</view>

clock.wxss

.flip-container {display: flex;justify-content: center;position: relative;padding: 0 20rpx;
}.flip-items {position: relative;width: 90rpx;height: 145rpx;font-size: 128rpx;font-weight: bold;border-radius: 10rpx;border: 1rpx solid rgba(121, 121, 121, 0.384);box-shadow: 0 2rpx 18rpx rgba(0, 0, 0, 0.7);
}.flip-container .flip-items:nth-of-type(2n+1) {margin-right: 12rpx;
}.flip-container .flip-items:nth-of-type(2),
.flip-container .flip-items:nth-of-type(4) {margin-right: 36rpx;
}.flip-container .flip-items:nth-of-type(2)::after,
.flip-container .flip-items:nth-of-type(4)::after,
.flip-container .flip-items:nth-of-type(2)::before,
.flip-container .flip-items:nth-of-type(4)::before {position: absolute;right: -18rpx;content: '';transform: translateX(50%);width: 25rpx;height: 25rpx;border-radius: 50%;box-shadow: rgba(0, 0, 0, 0.7) 1px 1px 5px;background-color: rgba(0, 0, 0, 0.801);
}.flip-container .flip-items:nth-of-type(2)::before,
.flip-container .flip-items:nth-of-type(4)::before {top: 25%;
}.flip-container .flip-items:nth-of-type(2)::after,
.flip-container .flip-items:nth-of-type(4)::after {bottom: 25%;
}.item {position: absolute;top: 0;left: 0;right: 0;bottom: 0;z-index: 1;
}.item::before {position: absolute;content: '';top: 75rpx;width: 100%;height: 5rpx;background-color: rgba(0, 0, 0, 0.5);z-index: 9;
}.flip-container .flip-items .item .up,
.flip-container .flip-items .item .down {position: absolute;left: 0;right: 0;height: 50%;overflow: hidden;
}/* 设置transform的原点 */
.up {transform-origin: 50% 100%;top: 0;
}/* 设置transform的原点 */
.flip-container .flip-items .item .down {transform-origin: 50% 0%;bottom: 0;
}.flip-container .flip-items .item .inner {position: absolute;width: 100%;height: 145rpx;color: #252525;left: 0;line-height: 145rpx;text-align: center;text-shadow: 0 2rpx 4rpx rgb(0, 0, 0);border-radius: 10rpx;background-color: #55e3e3;
}.flip-container .flip-items .item .up .inner {top: 0;
}.flip-container .flip-items .item .down .inner {bottom: 0;
}.flip-container .flip-items .item .up .shadow {border-top-left-radius: 10rpx;border-top-right-radius: 10rpx;
}.flip-container .flip-items .item .down .shadow {border-bottom-left-radius: 10rpx;border-bottom-right-radius: 10rpx;
}.flip-container .flip-items .item.past {z-index: 3;
}/*  current time keep top z-index:4 */
.flip-container .flip-items .item.current {animation: highter-level 0.5s 0.5s linear forwards;z-index: 2;
}/* 前一秒的上半页,旋转 0~-90deg */
.flip-container .flip-items .item.past .up {animation: flip-past-up 0.5s linear both;
}/* 当前秒的下半页,旋转90~0 */
.flip-container .flip-items .item.current .down {animation: flip-current-down 0.5s 0.5s linear both;
}@keyframes flip-current-down {from {transform: rotateX(90deg);}to {transform: rotateX(0deg);}
}
@keyframes flip-past-up {from {transform: rotateX(0deg);}to {transform: rotateX(-90deg);}
}@keyframes highter-level {from {z-index: 4;}to {z-index: 4;}
}.flip-container .flip-items .item .shadow {position: absolute;width: 100%;height: 100%;
}/* show 渐变 */
.flip-container .flip-items .item.past .up .shadow {background: linear-gradient(rgba(0, 0, 0, 0.1) 0%, #000 100%);animation: show 0.5s linear both;
}/* show 渐变 */
.flip-container .flip-items .item.past .down .shadow {background: linear-gradient(#000 0%, rgba(0, 0, 0, 0.1) 100%);animation: show 0.5s linear both;
}/* hide 渐变 */.flip-container .flip-items .item.current .up .shadow {background: linear-gradient(rgba(0, 0, 0, 0.1) 0%, #000 100%);animation: hide 0.5s 0.3s linear both;
}.flip-container .flip-items .item.current .down .shadow {background: linear-gradient(#000 0%, rgba(0, 0, 0, 0.1) 100%);animation: hide 0.5s 0.3s linear both;
}@keyframes show {from {opacity: 0;}to {opacity: 1;}
}@keyframes hide {from {opacity: 1;}to {opacity: 0;}
}

clock.js


Page({data: {},onLoad: function () {this.setTimeRunner()},setTimeRunner: function () {this.timeRunner = setInterval(() => {this.getTimeStr();this.getTimeArr();}, 1000);},getTimeStr: function () {let that = this;var time = new Date();var hour = ('0' + time.getHours()).slice(-2);var minute = ('0' + time.getMinutes()).slice(-2);var second = ('0' + time.getSeconds()).slice(-2);var timeStr = (hour + minute + second).split('');that.setData({timeStr:timeStr})},getTimeArr: function () {var timeArr = this.data.timeStr.map(function (element, index) {var max;if (index & 1 == 1) { max = 9;} else if (index == 0) { max = 2;} else if (index == 2) { max = 5;} else if (index == 4) { max = 5;}var current = Number(element)return {max: max,current: current};})this.setData({timeArr:timeArr})},beforeDestroy:function () {clearInterval(this.timeRunner);},onUnload: function () {this.beforeDestroy()}
})

运行效果

点击翻页时钟运行效果

总结

本项目的综合性较强,对wxss、wxml、js的综合运用需要较为熟悉,是一个非常好的练手小项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一般汽车有几个气缸,L型、V型、H型、W型气缸中的字母L、V、H、W是什么意思。举出常见牌子汽车气缸代表车型,L型、V型、H型、W型气缸哪种用的最多?

问题描述&#xff1a;一般汽车有几个气缸&#xff0c;L型、V型、H型、W型气缸中的字母L、V、H、W是什么意思。举出常见牌子汽车气缸代表车型&#xff0c;L型、V型、H型、W型气缸哪种用的最多&#xff1f; 问题解答&#xff1a; 汽车的气缸数根据车型和排量有所不同&#xff0c…

VirtualBox安装linuxmint-21.2虚拟机并配置网络

VirtualBox安装linuxmint-21.2虚拟机并配置网络 适用于在VirtualBox平台上安装linuxmint-21.2虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径Oracle VM VirtualBoxVirtualBox-7.0.12-159484D:\softwareCentOS7CentOS-7.9.2009E:\…

STM32——OLED实验

1.OLED简介 OLED&#xff0c;即有机发光二极管 OLED引脚说明 引脚说明&#xff1a; 1、CS&#xff1a;OLED片选信号&#xff08;低电平有效&#xff09; 2、WR&#xff1a;向OLED写入数据 3、RD&#xff1a;向OLED读取数据 4、D[7:0]&#xff1a;8位双向数据线&#xff0c;有…

kubebuilder+code-generator开发k8s的controller

本文记录用kubebuilder和code-generator开发k8s的crd控制器。 概览 和k8s.io/code-generator类似&#xff0c;是一个码生成工具&#xff0c;用于为你的CRD生成kubernetes-style API实现。区别在于&#xff1a; Kubebuilder不会生成informers、listers、clientsets&#xff0c…

宠物服务新篇章:预约小程序带来的变革

随着科技的进步和互联网的普及&#xff0c;小程序已经成为了一种非常受欢迎的应用形式。对于宠物门店来说&#xff0c;开发一个预约小程序可以大大提高客户体验和管理效率。下面是一份宠物门店预约小程序的开发指南。 浏览器搜索乔拓云&#xff0c;登录乔拓云网后台&#xff0c…

拿来就可以套用的网络口碑营销组合方案

俗话说酒香不怕巷子深&#xff0c;酒香自然有一定的优势&#xff0c;但小马识途营销顾问认为&#xff0c;面对众多的产品&#xff0c;稀有性并不那么容易&#xff0c;酒香也怕巷子深&#xff0c;赢得自己的品牌口碑&#xff0c;获取客户的信任度。才能让企业在市场竞争中长期立…

javax.servlet-api报错问题

报错&#xff1a;NoClassDefFoundError: javax/servlet/http/HttpServletResponse 服务原有依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope></dependency…

大数据仓库开发规范示例

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

二十四、同域名下JSESSIONID重叠导致退出

同域名下JSESSIONID重叠导致退出 近期在开发项目的时候发现,如果同域名的情况下,如果把一个单页面无登录系统嵌套进入另外一个系统,那么会出现相互退出的问题。 思考解决方案 一、清除掉嵌套的系统的JSESSIONID,意思就是嵌套系统不设置JSESSIONID 1找寻出问题接口 在无痕…

【电源专题】案例:在EN脚加个电阻就能解决电源下电输出振荡?

案例背景:在某产品上使用一颗升压芯片发现下电输出波形振荡,但此产品并不是第一个使用此升压芯片的。早先此升压芯片使用在其他产品上没有报过这个异常。 分析方法:使用DEMO板,查看标准DEMO板无异常。将异常板卡上的参数与全部换到DEMO板上发现同样存在异常。 推测原因:…

c# _表示未使用的变量引用

在 C# 8.0 中&#xff0c;下划线 _ 还引入了新的用途&#xff0c;用于表示未使用的变量引用。这是为了避免编译器生成 “未使用变量” 的警告。 在以前的 C# 版本中&#xff0c;如果你声明了一个变量但没有使用它&#xff0c;编译器会生成一个警告&#xff0c;提示该变量未使用…

JavaScript总结

1.什么是编程&#xff1f; 编程是让计算机执行特定任务的过程&#xff0c;通过使用某种编程语言编写代码&#xff0c;让计算机解决某个问题&#xff0c;并最终得到一个结果 2.计算机程序 计算机程序是一组计算机能识别和执行的指令&#xff0c;告诉计算机该做什么 3.计算机语…

Maya参考图的导入和层的应用

参考视频&#xff1a;08.参考图的导入和层的应用_哔哩哔哩_bilibili 前视图/右视图模式下导入图形 创建图层 锁定后可以避免图片位置的移动 前视图和右视图要根据参照物对齐 与模型保持一定距离&#xff0c;同时把该参照图添加到图层中 模型可以添加到图层2中

Qt应用开发(安卓篇)——Linux下Qt15.5.2配置Android

目录 一、前言 二、Qt安装 三&#xff1a;JDK安装 四&#xff1a;安装SDK&#xff0c;NDK 五、其他事项 六、新建项目 一、前言 看网上教程&#xff0c;多数是windows环境下的&#xff0c;配置也很简单&#xff0c;想不到自己配置的时候却遇到很多问题&#xff0c;传了一…

0_项目git地址——正点原子minifly与crazyflie

1、说明&#xff1a; 在每个专栏的第一篇文章&#xff0c;笔者都会贴出项目的git地址&#xff0c;方便后来者学习和复现&#xff1b; 下面介绍两个项目的官网资料和git地址&#xff0c;最后给出两者的对比&#xff1b; 2、正点原子minifly (1)minifly官网资料下载中心&#…

【深度学习每日小知识】Training Data 训练数据

训练数据是机器学习的基本组成部分&#xff0c;在模型的开发和性能中起着至关重要的作用。它是指用于训练机器学习算法的标记或注释数据集。以下是与训练数据相关的一些关键方面和注意事项。 Quantity 数量 训练数据的数量很重要&#xff0c;因为它会影响模型的泛化能力。通常…

Vue3使用ElementPlus中的el-upload手动上传并调用上传接口

前端代码 <div class"upload-div"><el-uploadv-model:file-list"form.fileImageList"ref"uploadRef"capture"false"action"#"accept"image/*"list-type"picture-card":on-change"handleC…

Flink standalone集群部署配置

文章目录 简介软件依赖部署方案二、安装1.下载并解压2.ssh免密登录3.修改配置文件3.启动集群4.访问 Web UI 简介 Flink独立模式&#xff08;Standalone&#xff09;是部署 Flink 最基本也是最简单的方式&#xff1a;所需要的所有 Flink 组件&#xff0c; 都只是操作系统上运行…

Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解

简介 在进行网络诊断或排查问题时&#xff0c;了解数据包从源主机到目标主机之间的具体传输路径至关重要。Linux系统提供了traceroute和tracepath工具来实时显示链路路径信息&#xff0c;而Windows则使用了tracert命令实现相同的功能。本文将详细介绍这三个命令的用法及其在不…

Python--装饰器

在 Python 中&#xff0c;装饰器是一种特殊类型的函数&#xff0c;它们用于修改或增强其他函数或方法的行为。装饰器本质上是一个函数&#xff0c;它接受一个函数作为参数&#xff0c;并返回一个新的函数。使用装饰器可以在不修改原函数代码的前提下&#xff0c;给函数添加新的…