• 滚动数字时钟


    <!doctype html>

    <html>

    <head>

        <meta charset="utf-8">

        <title>滚动数字时钟</title>

        <script src="https://file.alonesky.com/jscss/jquery.js"></script>

        <style type="text/css">

    * {

    margin: 0;

    padding: 0;

    box-sizing: border-box;

    }

    html, body {

    height: 100%;

    100%;

    }

    body {

    background: black;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;

    -webkit-box-pack: center;

    -ms-flex-pack: center;

    justify-content: center;

    -webkit-box-align: center;

    -ms-flex-align: center;

    align-items: center;

    }

    .clock {

    height: 20vh;

    color: white;

    font-size: 22vh;

    font-family: sans-serif;

    line-height: 20.4vh;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;

    position: relative;         /*background: green;*/

    overflow: hidden;

    }

    .clock::before, .clock::after {

    content: '';

    7ch;

    height: 3vh;

    background: -webkit-linear-gradient(bottom, transparent, black);

    background: linear-gradient(to top, transparent, black);

    position: absolute;

    z-index: 2;

    }

    .clock::after {

    bottom: 0;

    background: -webkit-linear-gradient(top, transparent, black);

    background: linear-gradient(to bottom, transparent, black);

    }

    .clock>div {

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;

    }

    .tick {

    line-height: 17vh;

    }

    .tick-hidden {

    opacity: 0;

    }

    .move {

    -webkit-animation: move linear 1s infinite;

    animation: move linear 1s infinite;

    }

    @-webkit-keyframes move {

    from {

    -webkit-transform: translateY(0vh);

    transform: translateY(0vh);

    }

    to {

    -webkit-transform: translateY(-20vh);

    transform: translateY(-20vh);

    }

    }

    @keyframes move {

    from {

    -webkit-transform: translateY(0vh);

    transform: translateY(0vh);

    }

    to {

    -webkit-transform: translateY(-20vh);

    transform: translateY(-20vh);

    }

    }

        </style>

    </head>

    <body>

        <div class="clock">

            <div class="hours">

                <div class="first">

                    <div class="number">0</div>

                </div>

                <div class="second">

                    <div class="number">0</div>

                </div>

            </div>

            <div class="tick">:</div>

            <div class="minutes">

                <div class="first">

                    <div class="number">0</div>

                </div>

                <div class="second">

                    <div class="number">0</div>

                </div>

            </div>

            <div class="tick">:</div>

            <div class="seconds">

                <div class="first">

                    <div class="number">0</div>

                </div>

                <div class="second infinite">

                    <div class="number">0</div>

                </div>

            </div>

        </div>

        <script type="text/javascript">

        var hoursContainer = document.querySelector('.hours')

        var minutesContainer = document.querySelector('.minutes')

        var secondsContainer = document.querySelector('.seconds')

        var tickElements = Array.from(document.querySelectorAll('.tick'))

        var last = new Date(0)

        last.setUTCHours(-1)

        var tickState = true

        function updateTime() {

            var now = new Date

            var lastHours = last.getHours().toString()

            var nowHours = now.getHours().toString()

            if (lastHours !== nowHours) {

                updateContainer(hoursContainer, nowHours)

            }

            var lastMinutes = last.getMinutes().toString()

            var nowMinutes = now.getMinutes().toString()

            if (lastMinutes !== nowMinutes) {

                updateContainer(minutesContainer, nowMinutes)

            }

            var lastSeconds = last.getSeconds().toString()

            var nowSeconds = now.getSeconds().toString()

            if (lastSeconds !== nowSeconds) {

                //tick()

                updateContainer(secondsContainer, nowSeconds)

            }

            last = now

        }

        function tick() {

            tickElements.forEach(t => t.classList.toggle('tick-hidden'))

        }

        function updateContainer(container, newTime) {

            var time = newTime.split('')

            if (time.length === 1) {

                time.unshift('0')

            }

            var first = container.firstElementChild

            if (first.lastElementChild.textContent !== time[0]) {

                updateNumber(first, time[0])

            }

            var last = container.lastElementChild

            if (last.lastElementChild.textContent !== time[1]) {

                updateNumber(last, time[1])

            }

        }

        function updateNumber(element, number) {

            //element.lastElementChild.textContent = number

            var second = element.lastElementChild.cloneNode(true)

            second.textContent = number

            element.appendChild(second)

            element.classList.add('move')

            setTimeout(function() {

                element.classList.remove('move')

            }, 990)

            setTimeout(function() {

                element.removeChild(element.firstElementChild)

            }, 990)

        }

        setInterval(updateTime, 100);

        </script>

    </body>

    </html>

  • 相关阅读:
    centos7开启关闭防火墙
    虚拟机vmnet1和vmnet8找不到,注册表没有删除干净,见图
    dhcp和static的区别
    SQL手册
    canal架构原理
    SQL优化(待完善)
    数仓简介
    java逆变与协变(待完善)
    mysqljoin的原理和优化
    深入理解java虚拟机阅读笔记
  • 原文地址:https://www.cnblogs.com/alonesky/p/9954136.html
Copyright © 2020-2023  润新知