抖音超火的罗盘时钟

网友投稿 943 2022-05-28

抖音超火的罗盘时钟

利用原生js,实现的罗盘时钟效果

实现效果

实现思路

将数字摆成圆环

获取当前时间,让圆环旋转一定的角度,转到水平位置

将当前时间变亮

抖音超火的罗盘时钟

实现的思路还是很简单的,但是在过程中会有很多的细节需要考虑到

实现过程

解析几个重要部分

搭建HTML框架

因为数字的量太大,采用js动态生成数字

js生成数字

这个函数是我用来生成日期,时间数字的,传入了5个参数确实有点多了

一个参数num:传入循环的终点

第二个参数date:传入要生成的标签加在哪里,也就是是谁下的标签

第三个参数target:传入单位,时分秒这些

第四个参数bool:传入是否,用来指定是否要补零

第五个参数origin:传入它的起始点

由于使用 dom 操作会消耗性能,这里需要大量的添加 dom 节点,如果使用简单的for循环生成节点,会多次的修改 dom 结构

为了提高性能,可以建立一个文档碎片documentfragment,作为临时容器,最后一次再加到父节点中

function create(num,date,target,bool,origin) { var fragment = document.createDocumentFragment(); for(var i = origin; i < num ; i ++) { var j = i; if(bool){ j = j > 9 ? j : '0' + j; } var span = document.createElement('span'); span.appendChild(document.createTextNode(j + target)); fragment.appendChild(span); } date.appendChild(fragment); }

展示表盘,也就是生成圆形的效果

通过定位将全部span盒子定位在一起,通过transfromX将盒子一开,作为半径,再通过给每个盒子旋转一份角度,使得盒子均匀的散开

function rot(target,distance) { var rotBox = target.children; for(var i = 0 ;i < rotBox.length ; i ++ ){ rotBox[i].style.transform = 'rotate(' + (360 / rotBox.length ) * i + 'deg)' + 'translateX(' + distance + ')' ; } }

由于页面加载需要一定时间,会导致js代码未能立即执行,页面会有一段空白阶段,所以添加一个立即执行函数让页面一加载就有效果呈现

实现代码

Document

CSS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:烧录镜像U盘方法
下一篇:ESXi虚拟机磁盘格式转换与减小硬盘容量的方法
相关文章