实现动态翻转时钟效果的 HTML、CSS 和 JavaScript,附源码

实现动态翻转时钟效果的 HTML、CSS 和 JavaScript

在现代网页设计中,动画效果可以极大地增强用户体验。本文将介绍如何利用 HTML、CSS 和 JavaScript 创建一个动态翻转时钟的效果,模拟经典机械翻页时钟的视觉效果。我们将通过详细的步骤讲解如何实现时钟数字的翻转动画、3D 视觉效果、模糊效果等,打造一个具有高度还原度的翻转时钟。

机械时钟

源码获取👇

在这里插入图片描述

功能概述

该页面实现了一个动态的翻转时钟效果。通过 flip-card 元素,数字会在每次时间变化时进行翻转。每次数字变化时,都会触发一个翻转动画,并带有模糊和阴影效果,模拟了机械时钟翻页的过程。

主要功能:

  1. 时钟显示:页面每秒钟自动更新当前的时、分、秒,并通过翻转效果展示时间的变化。
  2. 翻转动画:每当时间的某一位数字发生变化时,当前数字会先进行旋转,并伴随模糊效果,直到翻转完成后更新为新数字。
  3. 3D 视觉效果:每个数字卡片应用了透视效果和阴影,增强了 3D 视觉感,使翻转动画更加真实。
  4. 平滑过渡:数字更新时通过适当的延迟控制,使得数字翻转的过程更加流畅自然,避免了突兀的变化。

代码解析

1. HTML 结构

页面的 HTML 结构主要由多个 flip-card 元素组成,每个 flip-card 包含上下两部分:topbottom,分别用于展示数字的上下翻转部分。时钟的每一位数字(时、分、秒)都通过这种结构进行显示。

<div class="flip-card"><div class="top" id="h1-top"></div><div class="bottom" id="h1-bottom"></div>
</div>

每个 flip-card 的容器都有一个独立的 topbottom 部分,负责展示数字翻转的上下两部分。每当数字更新时,会通过 JavaScript 动态更新这些部分的内容。

2. CSS 样式

CSS 部分为翻转时钟提供了视觉效果。通过 perspectivetransform-style 属性,为翻转动画提供了 3D 透视效果。此外,使用 @keyframes 来定义翻转动画,其中包括模糊效果和旋转的过渡。

.flip-card {perspective: 1000px; /* 设置更强的透视效果 */
}.flip-card .flip {animation: flipDown 0.7s ease-in-out; /* 翻转动画 */
}@keyframes flipDown {0% {transform: rotateX(0deg); /* 初始状态 */filter: blur(0px); /* 无模糊效果 */}50% {transform: rotateX(90deg); /* 翻转到中间 */filter: blur(10px); /* 添加模糊效果 */}100% {transform: rotateX(180deg); /* 完成翻转 */filter: blur(0px); /* 移除模糊效果 */}
}
  • perspective: 1000px:为整个翻转效果设置透视深度,使得数字的翻转看起来更加立体。
  • @keyframes flipDown:定义了从 0 到 180 度的翻转过程,翻转过程中加入了模糊效果,模拟翻转的动态过程。

3. JavaScript 动态更新

JavaScript 负责定时更新时钟数字,并触发数字翻转的动画。每秒钟,updateClock 函数会更新时、分、秒的值,并通过 updateDigit 函数触发每个数字的翻转动画。为了平滑过渡,我们为每个数字设置了不同的延迟。

function updateDigit(id, newValue, delay = 0) {let topEl = document.getElementById(`${id}-top`);let bottomEl = document.getElementById(`${id}-bottom`);if (topEl.innerText !== newValue) {let flipEl = document.createElement("div");flipEl.classList.add("flip");flipEl.innerText = topEl.innerText;setTimeout(() => {flipEl.addEventListener('animationend', () => {topEl.innerText = newValue;bottomEl.innerText = newValue;flipEl.remove();});topEl.appendChild(flipEl);}, delay);}
}
  • updateDigit:负责根据时间更新每个数字的显示,并执行翻转动画。通过 setTimeout 控制动画的延迟,确保每个数字的翻转过程不冲突。
  • setInterval(updateClock, 1000):每秒钟调用一次 updateClock 函数,更新时钟显示。

视觉效果与用户体验

  1. 3D 翻转效果:通过 CSS 的 perspectivetransform 属性,使得数字的翻转过程看起来非常立体,类似真实的机械时钟翻页效果。
  2. 模糊过渡:在数字翻转的过程中,我们使用了 blur 过滤器来模拟物理翻转时的视觉模糊,增强了翻转动画的真实感。
  3. 阴影和光影效果:为了增强 3D 效果,每个数字卡片都加上了阴影,给用户带来更强的视觉层次感。

总结

通过结合 HTML、CSS 和 JavaScript,我们成功实现了一个动态翻转时钟,给用户带来了更具视觉冲击力的时钟体验。利用 3D 透视、翻转动画、模糊效果和光影效果等技术,我们不仅完成了功能实现,还增强了用户的沉浸感。这种时钟效果不仅实用,还能为网站添加一份独特的动感元素。

未来,你可以根据这个基础,进一步扩展功能,比如添加数字颜色变化、不同的时间格式显示等,打造更具个性化的时钟效果。

源码获取👇

在这里插入图片描述

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

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

相关文章

Spring Boot与MyBatis

Spring Boot与MyBatis的配置 一、简介 Spring Boot是一个用于创建独立的、基于Spring的生产级应用程序的框架&#xff0c;它简化了Spring应用的初始搭建以及开发过程。MyBatis是一款优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。将Spring Boot和MyBa…

1.16作业

1 进注册界面&#xff0c;第一次以为抓包选把isadmin ture了就好 第二次尝试&#xff0c;勾选is admin&#xff0c;有需要invitecode&#xff08;经典&#xff09; 2 p r**5 r**4 - r**3 r**2 - r 2023 q r**5 - r**4 r**3 - r**2 r 2023 n 25066797992811602609904…

LeetCode 2209.用地毯覆盖后的最少白色砖块:记忆化搜索之——深度优先搜索(DFS)

【LetMeFly】2209.用地毯覆盖后的最少白色砖块&#xff1a;记忆化搜索之——深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-white-tiles-after-covering-with-carpets/ 给你一个下标从 0 开始的 二进制 字符串 floor &#xff0c;它表示地…

「正版软件」PDF Reader - 专业 PDF 编辑阅读工具软件

PDF Reader 轻松查看、编辑、批注、转换、数字签名和管理 PDF 文件&#xff0c;以提高工作效率并充分利用 PDF 文档。 像专业人士一样编辑 PDF 编辑 PDF 文本 轻松添加、删除或修改 PDF 文档中的原始文本以更正错误。自定义文本属性&#xff0c;如颜色、字体大小、样式和粗细。…

【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘

问题描述&#xff1a; vue运行时正常&#xff0c;但是打开页面后报错 Uncaught SecurityError: Failed to construct WebSocket: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 解决方案&#xff1a; 在项目列表中的public下的ind…

骶骨神经

骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

书生大模型实战营12-InternVL 多模态模型部署微调

文章目录 L2——进阶岛InternVL 部署微调实践0.开发机创建与使用1.环境配置1.1.训练环境配置1.2.推理环境配置 2.LMDeploy部署2.1.LMDeploy基本用法介绍2.2.网页应用部署体验2.3 出错解决2.3.1 问题12.3.2 问题2 3.XTuner微调实践3.1.准备基本配置文件3.2.配置文件参数解读3.3.…

深度学习之图像回归(二)

前言 这篇文章主要是在图像回归&#xff08;一&#xff09;的基础上对该项目进行的优化。&#xff08;一&#xff09;主要是帮助迅速入门 理清一个深度学习项目的逻辑 这篇文章则主要注重在此基础上对于数据预处理和模型训练进行优化前者会通过涉及PCA主成分分析 特征选择 后…

安科瑞能源物联网平台助力企业实现绿色低碳转型

安科瑞顾强 随着全球能源结构的转型和“双碳”目标的推进&#xff0c;能源管理正朝着智能化、数字化的方向快速发展。安科瑞电气股份有限公司推出的微电网智慧能源管理平台&#xff08;EMS 3.0&#xff09;&#xff0c;正是这一趋势下的创新解决方案。该平台集成了物联网&…

基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

论文笔记-WSDM2024-LLMRec

论文笔记-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于图增强的大模型推荐摘要1.引言2.前言2.1使用图嵌入推荐2.2使用辅助信息推荐2.3使用数据增强推荐 3.方法3.1LLM作为隐式反馈增强器3.2基于LLM的辅助信息增强3.2.1用户…

优化YOLOv8:如何利用ODConv卷积解决复杂背景下的目标识别问题

文章目录 1. YOLOv8的现状与挑战1.1 ODConv的提出背景1.2 ODConv卷积的原理 2. YOLOv8与ODConv的结合2.1 ODConv集成到YOLOv8中的架构2.2 代码实现示例2.3 性能评估与改进 3. ODConv的实际应用与优化3.1 ODConv在不同数据集上的表现3.1.1 COCO数据集3.1.2 VOC数据集3.1.3 自定义…

DPVS-2:单臂负载均衡测试

上一篇编译安装了DPVS&#xff0c;这一篇开启DPVS的负载均衡测试 &#xff1a; 单臂 FULL NAT模式 拓扑-单臂 单臂模式 DPVS 单独物理机 CLINET&#xff0c;和两个RS都是另一个物理机的虚拟机&#xff0c;它们网卡都绑定在一个桥上br0 &#xff0c; 二层互通。 启动DPVS …

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…

flowable适配达梦数据库

文章目录 适配相关问题无法从数据库产品名称“DM DBMS”中推断数据库类型分析解决 构建ibatis SqlSessionFactory时出错&#xff1a;inStream参数为null分析解决 liquibase相关问题问题一&#xff1a;不支持的数据库 Error executing SQL call current_schema: 无法解析的成员访…

ElasticSearch公共方法封装

业务场景 1、RestClientBuilder初始化&#xff08;同时支持单机与集群&#xff09; 2、发送ES查询请求公共方法封装&#xff08;支持sql、kql、代理访问、集群访问、鉴权支持&#xff09; 3、判断ES索引是否存在&#xff08;/_cat/indices/${indexName}&#xff09; 4、判断ES…

题海拾贝:【枚举】P2010 [NOIP 2016 普及组] 回文日期

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

《深入理解JVM》实战笔记(二): 类加载机制与类加载器

序言 Java 语言的强大之处之一在于其动态加载的能力&#xff0c;使得 Java 程序可以在运行时加载新的类&#xff0c;而不需要在编译时确定所有的类信息。这一切都离不开 JVM 的类加载机制。本篇博客将详细探讨 JVM 的类加载过程以及类加载器的工作原理&#xff0c;帮助你更深入…

vin码拍照识别-车牌识别api-vin码接口解析

在当今数字化飞速发展的背景下&#xff0c;如何高效、准确地管理和追踪车辆信息成为了众多企业和个人关注的焦点。VIN码&#xff08;Vehicle Identification Number&#xff09;和车牌作为车辆独一无二的身份标识&#xff0c;在车辆管理、保险理赔、二手车交易等多个场景中发挥…