千家信息网

javascript如何实现数字时钟特效

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家分享的是有关javascript如何实现数字时钟特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先看效果,动态数字时钟用到了jQuery,但是只是用来获取元
千家信息网最后更新 2025年02月02日javascript如何实现数字时钟特效

这篇文章给大家分享的是有关javascript如何实现数字时钟特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

先看效果,动态数字时钟

用到了jQuery,但是只是用来获取元素,只有一点点

面向对象开发

看代码

HTML,自己引入jQuery和js,jQuery在前

    
0
1
2
:
:

CSS

*{     margin: 0;     padding: 0;}html,body{     height: 100%;     width: 100%;     background-color: #0e141b;    overflow: hidden;    /* 设置溢出隐藏 */}.wrapper{    text-align: center;    width: 100%;}.wrapper .column,.wrapper .coln{    display: inline-block;    vertical-align: top;    color: rgba(224,230,235,0.89);    font-size: 86px;    line-height: 86px;    font-weight: 300;}.column{    transition: all 300ms ease-in;}.coln{    /* 冒号的位置 */    transform: translateY(calc(50vh - 83px));}/* 以下都是不同类名对应的透明度 */.visible{    opacity: 1;}.close{    opacity: 0.25;}.far{    opacity: 0.15;}.distance{    opacity: 0.05;}

JS

function Index(dom, use) {    // 把传进来的DOM元素转数组    this.column = Array.from(dom);    // 把use转到全局,这个是判断要显示的时制是112小时还是24小时    this.use = use;    // 这个数组是后面要设置的类名    this.classList = ['visible', 'close', 'far', 'distance', 'distance', 'distance', 'distance', 'distance'];    this.creatDom();    this.start();//开始}// 开始函数Index.prototype.start = function () {    var self = this;    setInterval(function () {        var c = self.getClock();        // console.log(c);        self.column.forEach(function (ele, index) {            var n = + c[index];            var offset = n * 86;//移动距离            console.log(offset);            $(ele).css({                'transform': 'translateY(calc(50vh - ' + offset + 'px - 73px))'                // 设置移动            });            Array.from(ele.children).forEach(function (ele2, index2) {                var className = self.getClass(n, index2);                // 调用函数设置类名                $(ele2).attr('class', className);            })        })    }, 500);};// 为距离时间不一样的元素设置不一样的class名Index.prototype.getClass = function (n, i) {    var className = this.classList.find(function (ele, index) {        return i - index === n || i + index === n;    })    return className || "";} // 获得时间并且格式化时间,字符串 21:06:09   ==>  210609Index.prototype.getClock = function () {    var d = new Date();    // 这里走一个三目运算符,如果use是真(true)则取值,如果为假则12取余转为12小时制    return [this.use ? d.getHours() : d.getHours() % 12 || 12, d.getMinutes(), d.getSeconds()].reduce(function (p, n) {        return p + ('0' + n).slice(-2);        // 这里是吧个位数加0,比如1添加一个0后得到01,如果是12加0后事012,但是取数值后两位,得到12    }, '')};// 由于把HTML元素都写到HTML文件里,太过冗余,所以使用for循环添加进去Index.prototype.creatDom = function () {    for (var i = 0; i < 6; i++) {        var oDiv = '
' + i + '
'; $(".six").append(oDiv); } for (var i = 0; i < 10; i++) { var iDiv = '
' + i + '
'; $(".ten").append(iDiv); }}; // 第二个参数,true为24小时制,false为12小时制new Index($('.column'), true);

js的注释我写的比较全,应该可以看懂

感谢各位的阅读!关于"javascript如何实现数字时钟特效"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0