仿智能社官网:原生JS实现简单又酷炫的3D立方体时钟
先放一下我做的效果:https://linrunzheng.github.io/3Dclock/3Dclock/new.html
至于3D立方体怎么做这里就不在阐述了,可以看一下我之前的博客。
这里默认你已经做好了6个立方体,直接上JS代码:
页面进来的时候,先给6个立方体赋值上现在的时间,由于立方体比较小,左右2个面看不清且影响效果,这里左右2个面就不赋time了;
//获取元素
var oul = document.querySelectorAll("ul");
    var back = document.querySelectorAll(".back");
    var front = document.querySelectorAll(".front");
    var Top = document.querySelectorAll(".top");
    var bot = document.querySelectorAll(".bot");
    var btn = document.querySelector("button");
//获取当前时间,放到数组数组方便循环赋值var arr = [];
arr[0] = Math.floor(new Date().getHours() / 10);
    arr[1] = new Date().getHours() % 10;
    arr[2] = Math.floor(new Date().getMinutes() / 10);
    arr[3] = new Date().getMinutes() % 10;
    arr[4] = Math.floor(new Date().getSeconds() / 10);
    arr[5] = new Date().getSeconds() % 10;
//页面进来的时候循环给6个立方体的几个面分别赋值时间,(由于定时器的存在,不然会有0.5秒的间隔是没有时间的)
//分别对应前后上下
    for (var i = 0; i < arr.length; i++) {
       front[i].innerHTML = arr[i];
       back[i].innerHTML = arr[i] + 2 >= 10 ? (arr[i] + 2) % 10 : arr[i] + 2;
   T   op[i].innerHTML = arr[i] + 3 >= 10 ? (arr[i] + 3) % 10 : arr[i] + 3;
       bot[i].innerHTML = arr[i] + 1 >= 10 ? (arr[i] + 1) % 10 : arr[i] + 1;
    }
我们只关注front前面这一个面,其他的面只是修饰作用
//关键:定时器执行的函数
定时器函数开始:
function time() {
//重新获取当前时间
var arr2 = [];
        arr2[0] = Math.floor(new Date().getHours() / 10);
        arr2[1] = new Date().getHours() % 10;
        arr2[2] = Math.floor(new Date().getMinutes() / 10);
        arr2[3] = new Date().getMinutes() % 10;
        arr2[4] = Math.floor(new Date().getSeconds() / 10);
        arr2[5] = new Date().getSeconds() % 10;
//循环判断立方体front的数字时候有变化,如有有变化就加上类,实现翻转效果,css代码写在transition类里了,
//css关键类
.transition {
            transition: all 0.5s;
            transform: rotateY(-7deg) rotateX(95deg);
    }
关键:判断数字是否变化
for (var i = 0; i < oul.length; i++) {
if (front[i].innerHTML != arr2[i]) {
                oul[i].classList.add("transition");
            }
//给每个立方体加上过渡结束事件webkitTransitionEnd (其他浏览器有不同的写法,这里只写chrome的)
oul[i].index = i;
            oul[i].addEventListener("webkitTransitionEnd", function() {
//为几个面赋值数字
front[this.index].innerHTML = arr2[this.index];
                back[this.index].innerHTML = arr2[this.index] + 2 < 10 ? arr2[this.index] + 2 : (arr2[this.index] + 2) % 10;
                Top[this.index].innerHTML = arr2[this.index] + 3 < 10 ? arr2[this.index] + 3 : (arr2[this.index] + 3) % 10;
                bot[this.index].innerHTML = arr2[this.index] + 1 < 10 ? arr2[this.index] + 1 : (arr2[this.index] + 1) % 10;
//移除过渡事件,让立方体回到翻转前的效果
this.classList.remove("transition");
})
}
}
//开启定时器
    setInterval(time, 500)
至此已经完成了,打开网页看看效果吧。
源代码见:https://github.com/linrunzheng/3Dclock
仿智能社官网:原生JS实现简单又酷炫的3D立方体时钟的更多相关文章
- 使用Three.js网页引擎创建酷炫的3D效果的标签墙
		使用Three.js引擎(这是开源的webgl三维引擎,gitgub)进行一个简单应用. 做一个酷炫的3d效果的标签墙(已经放在我的博客首页,大屏幕可见), 去我的博客首页看看实际效果 www.son ... 
- 智能社官网顶部导航实现demo
		从智能社的blue老师公开课中学习到了很多,在此表示感谢. 这个导航很好玩,于是就想实现一个. html <div id="box"> <ul> <l ... 
- 基于jQuery仿迅雷影音官网幻灯片特效
		分享一款基于jQuery仿迅雷影音官网幻灯片特效迅.雷影音官网jQuery幻灯片特效是一款带左右箭头,索引按钮切换的jQuery幻灯片代码.效果图如下: 在线预览 源码下载 实现的代码. html ... 
- Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)
		Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) ... 
- 原生JS封装简单动画效果
		原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ... 
- HTML 5 +CSS3 + 原生js 做(雪花全屏飘落 + 3d旋转图)
		原文:HTML 5 +CSS3 + 原生js 做(雪花全屏飘落 + 3d旋转图) 3d旋转图:主要用css3中transform属性中的rotate,translate;以及用来做舞台效果的 pers ... 
- 原生JS实现简单富文本编辑器2
		<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- 原生JS实现简单富文本编辑器
		<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- 原生JS实现简单留言板功能
		原生JS实现简单留言板功能,实现技术:css flex,原生JS. 因为主要是为了练手js,所以其中布局上的一些细节并未做处理. <!DOCTYPE html> <html lang ... 
随机推荐
- 2006 - MySQL server has gone away
			mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ... 
- docker——三剑客之Docker Compose
			编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compo ... 
- 系统管理命令之last
			Linux系统中使用以下命令来查看文件的内容: cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! mor ... 
- R之内存管理
			引言 R的内存管理机制究竟是什么样子的?最近几日在讲一个分享会,被同学问到这方面的问题,可是到网上去查,终于找到一篇R语言内存管理不过讲的不清不楚的,就拿memory.limit()函数来说,是在wi ... 
- 一个Golang例子:for + goroutine + channel
			Rob Pike 在 Google I/O 2012 - Go Concurrency Patterns 里演示了一个例子(daisy chain). 视频地址:https://www.youtube ... 
- linux及安全第八周总结——20135227黄晓妍
			实验部分 实验环境搭建 -rm menu -rf git clone https://github.com/megnning/menu.git cd menu make rootfs qemu -ke ... 
- anaconda + tensorflow +ubuntu 超级菜鸟,大家多指正【转】
			本文转载自:https://blog.csdn.net/zzw000000/article/details/51203331 1.首先安装Anaconda 下载linux对应的anaconda版本,下 ... 
- SpringBoot使用Redis数据库
			(1)pom.xml文件引入jar包,如下: <dependency> <groupId>org.springframework.boot</groupId> &l ... 
- spring boot2 基于百度云apiface实现人脸检测与认证1
			原理介绍: 基于百度云的人脸资料库(用户上传),调用本地摄像头抓拍的图像,与百度云的用户图像做比对,实现人脸认证. 主要步骤如下: 1. 创建百度去账号 2. 在百度云控制台中创建人脸识别的应用,并记 ... 
- python strip()函数   os.popen()
			函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字 ... 
