溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript如何實現(xiàn)數(shù)字時鐘特效

發(fā)布時間:2021-09-24 11:02:32 來源:億速云 閱讀:165 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關javascript如何實現(xiàn)數(shù)字時鐘特效的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

先看效果,動態(tài)數(shù)字時鐘

javascript如何實現(xiàn)數(shù)字時鐘特效

用到了jQuery,但是只是用來獲取元素,只有一點點

面向對象開發(fā)

看代碼

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

<body>
    <div class="wrapper">
        <div class="column">
            <!-- 此div表示時的十位,只有0,1,2三個 -->
            <div>0</div>
            <div>1</div>
            <div>2</div>
        </div>
        <!-- 以下的內容寫到HTML內代碼太過冗余,使用js寫入 -->
        <div class="column ten"></div>
        <div class="coln">:</div>
        <div class="column six"></div>
        <div class="column ten"></div>
        <div class="coln">:</div>
        <div class="column six"></div>
        <div class="column ten"></div>
    </div>
</body>

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元素轉數(shù)組
    this.column = Array.from(dom);
    // 把use轉到全局,這個是判斷要顯示的時制是112小時還是24小時
    this.use = use;
    // 這個數(shù)組是后面要設置的類名
    this.classList = ['visible', 'close', 'far', 'distance', 'distance', 'distance', 'distance', 'distance'];
    this.creatDom();
    this.start();//開始
}
// 開始函數(shù)
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);
                // 調用函數(shù)設置類名
                $(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   ==>  210609
Index.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);
        // 這里是吧個位數(shù)加0,比如1添加一個0后得到01,如果是12加0后事012,但是取數(shù)值后兩位,得到12
    }, '')
};
// 由于把HTML元素都寫到HTML文件里,太過冗余,所以使用for循環(huán)添加進去
Index.prototype.creatDom = function () {
    for (var i = 0; i < 6; i++) {
        var oDiv = '<div>' + i + '</div>';
        $(".six").append(oDiv);
    }
    for (var i = 0; i < 10; i++) {
        var iDiv = '<div>' + i + '</div>';
        $(".ten").append(iDiv);
    }
};
 
// 第二個參數(shù),true為24小時制,false為12小時制
new Index($('.column'), true);

js的注釋我寫的比較全,應該可以看懂

感謝各位的閱讀!關于“javascript如何實現(xiàn)數(shù)字時鐘特效”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI