css模拟时钟
思路:
画时钟数字(x,y)坐标
x = x0 + r*cos(deg)
y = y0 + r*sin(deg)
知识点:
- 创建元素: createElement
- 添加元素: appendChild
- css3旋转: transform:rotate(30deg);
- css3改变旋转中心点: transform-origin:0 0;
- 获取当前时间, 把时间数字转换为度数
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- * { margin: 0; padding: 0; }
- #bg {
- width: 400px;
- height: 400px;
- background: #ddd;
- border-radius: 10px;
- /* div上下左右垂直居中 */
- position: absolute;
- left: 50%;
- top: 50%;
- margin-top: -200px;
- margin-left: -200px;
- }
- #bg #clock {
- width: 360px;
- height: 360px;
- background: #fff;
- border-radius: 50%;
- display: inline-block;
- margin: 20px;
- position: relative;
- }
- #hour {
- width: 70px;
- height: 16px;
- background: #000;
- position: absolute;
- left: 180px;
- top: 172px;
- border-radius: 16px;
- transform-origin:0 8px;
- }
- #minute {
- width: 120px;
- height: 12px;
- background: #000;
- position: absolute;
- left: 180px;
- top: 174px;
- border-radius: 12px;
- transform-origin:0 6px;
- }
- #second {
- width: 140px;
- height: 6px;
- background: #f00;
- position: absolute;
- left: 180px;
- top: 177px;
- border-radius: 6px;
- transform-origin:0 1px;
- /*transform:rotate(30deg);*/
- /*animation: clockRotate 3s linear infinite;*/
- }
- @keyframes clockRotate {
- from {transform:rotate(0deg);}
- to {transform:rotate(360deg);}
- }
- #point{
- width: 30px;
- height: 30px;
- border-radius: 50%;
- background: #000;
- position: absolute;
- left: 50%;
- top: 50%;
- margin: -15px 0 0 -15px;
- }
- #clock .number{
- position: absolute;
- font-size: 28px;
- width: 50px;
- height: 50px;
- line-height: 50px;
- text-align: center;
- }
- </style>
- </head>
- <body>
- <div id="bg">
- <div id="clock">
- <div id="hour"></div>
- <div id="minute"></div>
- <div id="second"></div>
- <div id="point"></div>
- </div>
- </div>
- <script>
- var clock = document.getElementById('clock');
- var r = 150;
- var angle = Math.PI * 2; // 2PI = 360°
- for (var i = 1; i <=12; i++) {
- var deg = angle/12 * i - Math.PI/2;
- var x = r + r*Math.cos(deg);
- var y = r + r*Math.sin(deg);
- //console.log(x,y);
- var num = document.createElement('div');//创建div
- num.className = 'number';//设置class样式
- num.innerText = i;
- //设置坐标
- num.style.top = y + 'px';
- num.style.left = x + 'px';
- //添加
- clock.appendChild(num);
- }
- //TODO 1. 数字转换度数
- function run() {
- var date = new Date();
- //时(0-23) 分(0-59)秒(0-59)
- var hour = date.getHours();
- var minute = date.getMinutes();
- var second = date.getSeconds();
- var hourDeg = 360/12 * hour - 90;
- var minuteDeg = 360/60 * minute - 90;
- var secondDeg = 360/60 * second - 90;
- var hourDiv = document.getElementById('hour');
- var minuteDiv = document.getElementById('minute');
- var secondDiv = document.getElementById('second');
- hourDiv.style.transform = 'rotate('+hourDeg+'deg)';
- minuteDiv.style.transform = 'rotate('+minuteDeg+'deg)';
- secondDiv.style.transform = 'rotate('+secondDeg+'deg)';
- }
- //TODO 2. 设置定时器
- run();
- setInterval(function () {
- run();
- },1000);
- </script>
- </body>
- </html>
css模拟时钟的更多相关文章
- 【CSS3】纯CSS代码实现模拟时钟,+js对时功能。
使用CSS3纯代码来实现模拟时钟,及指针动画功能. 在这里主要使用到css3一些基本元素: border-radius:圆角边框,画圆形:表盘 Transform:变换,旋转,扭曲:刻度盘,指针形状 ...
- 纯js+html+css实现模拟时钟
前几天没事写的个模拟时钟,代码仅供小白参考,大神请自动绕过. <!DOCTYPE html> <html lang="en"> <head> & ...
- 一个模拟时钟的时间选择器 ClockPicker
最近开发的一个模拟时钟的时间选择器 ClockPicker,用于 Bootstrap,或者单独作为一个 jQuery 插件. 源代码托管在 GitHub 上: ClockPicker 最近项目中需要用 ...
- 模拟时钟(AnalogClock)和数字时钟(DigitalClock)
Demo2\clock_demo\src\main\res\layout\activity_main.xml <LinearLayout xmlns:android="http://s ...
- android脚步---数字时钟和模拟时钟
时钟UI组件是两个非常简单的组件,分为Digitalclock 和Analogclock, main.xml文件,书中程序有问题,加了两个组件,一个Button和一个<Chronometer ...
- css模拟Bootstrap响应式布局——栅格
做作业的时候遇见用css模拟Bootstrap的栅格布局,学习了一下.发现这个很有用,用来在不同的平台上得到很好地用户体验,比如Phone.Pad.大屏幕显示器.小屏幕显示器.自己模拟用css写了一下 ...
- Java多线程之sleep方法阻塞线程-模拟时钟
package org.study2.javabase.ThreadsDemo.status; import java.text.SimpleDateFormat; import java.util. ...
- 模拟时钟(AnalogClock)
模拟时钟(AnalogClock) 显示一个带时钟和分针的表面 会随着时间的推移变化 常用属性: android:dial 可以为表面提供一个自定义的图片 下面我们直接看代码: 1.Activity ...
- 巧妙使用div+css模拟表格对角线
首先声明: 这只是探讨一种CSS模拟表格对角线的用法,实际在工作中可能觉得这样做有点小题大作,这不是本主题讨论的重点.如果对此深以为然的朋友,请一笑过之... 有时在插入文档时,要用到表格对角线,常见 ...
随机推荐
- docker基础之镜像
获取镜像 从 Docker Registry 获取镜像的命令是 docker pull.其命令格式为: docker pull [选项] [Docker Registry地址]<仓库名>: ...
- string类型用法大全
使用标准C++中string类,要包含头文件< string > string类的构造函数 //string(const char *s); 用字符串s初始化 string s1(&quo ...
- Hadoop — Yarn原理解析
1. 概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台:而MapReduce等运算程序则相当运行于操作系统之上的应用程序. 2. YARN的重要概念 ...
- es6之箭头函数
=> 箭头函数是ES6增加的函数表达式.将function关键字和函数名都删掉,并使用“=>”连接参数列表和函数体(低版本浏览器不支持) 箭头函数看上去只是语法的变动,其实也影响了this ...
- Ubuntu swap
问:我是一个Ubuntu 14.04 LTS版本的新手.我需要一块额外的swap文件来提高我Ubuntu服务器的性能.我怎样才能通过SSH连接用相关命令为我的Ubuntu 14.04 LTS 增加一块 ...
- Java根类Object的方法说明
Java中的Object类是所有类的父类,它提供了以下11个方法: public final native Class<?> getClass() public native int ha ...
- hadoop1.2.1的安装
前提:1.机器最好都做ssh免密登录,最后在启动hadoop的时候会简单很多 免密登录看免密登录 2.集群中的虚拟机最好都关闭防火墙,否则很麻烦 3集群中的虚拟机中必须安装jdk. 具体安装步骤如下: ...
- IEEE LaTeX模板使用BibTeX
IEEE LaTeX 模板使用 BibTeX 在Google Scholar获得的文献引用格式一般是BibTex的,而IEEE Transactions的模板默认用的是BibItem.目前没有什么自动 ...
- luogu 2569 股票交易 单调队列dp
注意转移方程 分1.凭空买 2.不买不卖 3.在原来基础上买 4.在原来基础上卖 四种情况 head=1,tail=0;再判断一下head<=tail也可以 #include<bits/s ...
- nth-of-type(n)
:nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素. p:nth-of-type(2) { background:#ff0000; } 规定属于其父元素的第二个 ...