<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
padding: ;
margin: ;
box-sizing: border-box
} ul,
li {
list-style: none;
} .clock-box {
position: absolute;
width: 200px;
height: 200px;
top: %;
left: %;
margin-top: -100px;
margin-left: -100px;
} .clock-box:after {
content: '';
width: 10px;
height: 10px;
position: absolute;
top: %;
left: %;
margin-top: -5px;
margin-left: -5px;
background: rebeccapurple;
border-radius: 5px;
} .clock-box .tick-box {
position: relative;
width: %;
height: %;
border: 2px solid black;
border-radius: %;
} .clock-box .tick-box li {
position: absolute;
height: 2px;
width: 5px;
top: 97px;
left: -2px;
background-color: #;
transform-origin: 100px center;
} .clock-box .tick-box li:nth-child(5n+) {
width: 10px;
} .item {
position: absolute;
background-color: red;
transform-origin: center bottom;
} .seconds-hand {
height: 89px;
width: 1px;
top: 11px;
left: 99px;
transform: rotate(0deg)
} .minutes-hand {
height: 76px;
width: 2px;
top: 24px;
left: 98px;
transform: rotate(60deg);
background: green;
} .hours-hand {
height: 60px;
width: 4px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
top: 40px;
left: 96px;
transform: rotate(72deg);
background: blue
}
</style>
</head> <body>
<div class="clock-box">
<ul class="tick-box">
</ul>
<div class="hours-hand item"></div>
<div class="minutes-hand item"></div>
<div class="seconds-hand item"></div>
</div>
</body>
<script>
const frag = document.createDocumentFragment();
const tickBox = document.querySelector('.tick-box')
const hour = document.querySelector('.hours-hand')
const minute = document.querySelector('.minutes-hand')
const second = document.querySelector('.seconds-hand')
for (let i = ; i < ; i++) {
let li = document.createElement('li');
li.style.transform = `rotate(${i * / }deg)`;
frag.appendChild(li)
}
tickBox.appendChild(frag) function time() {
const now = new Date();
const h = now.getHours();
const m = now.getMinutes();
const s = now.getSeconds();
hour.style.transform = `rotate(${(h+m/)*}deg)`
minute.style.transform = `rotate(${(m+s/)*}deg)`
second.style.transform = `rotate(${s*}deg)`
}
time()
setInterval(time, )
</script> </html>

效果如下:

原生 js 时钟实现的更多相关文章

  1. 基于canvas的原生JS时钟效果

    概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...

  2. css3和原生js时钟

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 圆盘时钟效果 原生JS

    圆盘时钟 旋转时钟 数字时钟 写在前面 仿荣耀手机时钟,设计的同款时钟效果 实现效果 实现原理 数字时钟 利用Date内置对象获取当下的时间,通过处理呈现在页面上 这一步获取时间是非常简单的,通过Da ...

  4. 利用css+原生js制作简易钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  5. 原生JS封装Ajax插件(同域&&jsonp跨域)

    抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...

  6. 常用原生JS方法总结(兼容性写法)

    经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...

  7. 原生JS实现"旋转木马"效果的图片轮播插件

    一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...

  8. 再谈React.js实现原生js拖拽效果

    前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目 ...

  9. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

随机推荐

  1. 更换mysql数据库的datadir目录

    更换过程如下: 1.新建指定的datadir目录,这里举例如:E:/mysql_datadir/data. 2.关闭mysql57服务器. 3.将原来的datadir目录下面的所有文件拷贝到E:/my ...

  2. Perl的变量及语境(一)

    Perl语言中的大部分语句表达式后都紧接一个分号,分隔不同的Perl语句. perl解释器能一次完成编译和运行这两个动作. perl通过一对反引号"``"来表示运行外部命令. 也可 ...

  3. Object-C-Foundation-NSDate

    NSDate 表达日期表达时间的方法 NSDate *now=[NSDate date]; 获得当前日期 NSDate *tomrrow=[now dateByAddingTimeInterval:2 ...

  4. Instruments(性能调优 12.3)

    Instruments Instruments是Xcode套件中没有被充分利用的一个工具.很多iOS开发者从没用过Instruments,或者只是用Leaks工具检测循环引用.实际上有很多Instru ...

  5. Java性能优化——HashCode的使用

    背景 告警子系统监控4万个大网元所有端口的某些指标数据,根据阈值配置判断是否产生告警.采集——数据处理子系统每5分钟会主动采集24万次数据,发送24万条消息给告警子系统,这24万条消息涉及100万实体 ...

  6. Linux基础命令---service

    service service可以控制系统服务(打开.关闭.重启).service在尽可能可预测的环境中运行SystemV init脚本,删除大多数环境变量并将当前工作目录设置为根目录.脚本参数位于“ ...

  7. linux系统启动顺序及init模式

    磁盘的第一个扇区(512bytes)主要记录了两个重要信息: 主引导分区MBR:master boot record,安装引导加载程序的地方,446bytes 分区表:partition table: ...

  8. Python3: Windows系统上同时安装Python2和Python3

    Python3: Windows系统上同时安装Python2和Python3 为什么要同时安装Python2和Python3环境呢? 因为一些库只支持Python2或者Python3; 在同一台电脑上 ...

  9. NFS常用命令

    1.客户端查看服务端可挂载卷 showmount -t 服务端IP 2.不重启加载NFS配置文件 exportfs -avr

  10. VC++ PathFindFileName函数,由文件路径获得文件名

    1.PathFindFileName函数的作用是返回路径中的文件名. PTSTR PathFindFileName( __in PTSTR pPath ); pPath是指向文件路径字符串的指针,函数 ...