JQ+html写的 罗盘时钟

效果图
在这里插入图片描述
点击中间的年份还可以切换颜色
在这里插入图片描述

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<style>
    * {
        margin: 0;
        padding: 0;

    }

    body {

        font-size: 12px;
        color: #fff;
        background: #000;
        transition: 2s;
    }

    .datatime {
        position: relative;
        height: 860px;
        width: 860px;
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

    .Y {
        display: none;
        position: relative;
        width: 100px;
        height: 100px;
        line-height: 100px;
        text-align: center;
        position: absolute;
        left: 380px;
        top: 380px;
        color: #ff0000;
        transition: 1s;
        z-index: 9999;
        font-weight: bold;

    }

    .Y::after {
        content: '';
        position: absolute;
        top: 65px;
        left: 10px;
        right: -430px;
        height: 1px;
        background: #fff;
        transition: 1s;
        z-index: -1;
    }

    .Y::before {
        content: '';
        position: absolute;
        top: 63px;
        left: 8px;
        width: 5px;
        height: 5px;
        border-radius: 50%;
        background: #fff;
        transition: 1s;
    }

    .M {
        position: absolute;
        width: 160px;
        height: 160px;
        z-index: 999;

        left: 350px;
        top: 350px;
        transition: 1s;
        /* background: rgb(58, 49, 49); */
        position: relative;
    }

    .D {
        position: absolute;
        width: 300px;
        height: 300px;

        z-index: 999;
        left: 280px;
        top: 280px;
        transition: 1s;
    }

    .h {
        position: absolute;
        width: 570px;
        height: 570px;
        z-index: 999;
        left: 145px;
        top: 145px;
        transition: 1s;
    }

    .m {
        position: absolute;
        width: 700px;
        height: 700px;
        z-index: 999;
        transition: 1s;

        left: 80px;
        top: 80px;
    }

    .s {
        position: absolute;
        width: 860px;
        height: 860px;
        left: 0;
        top: 0;
        transition: 0.1s;
        z-index: 999;
        z-index: 999;
    }

    .bg {
        position: absolute;
        width: 450px;
        height: 450px;

        z-index: 2;

        left: 205px;
        top: 205px;
        transition: 1s;
    }

    span {
        position: absolute;
        width: 50%;
        height: 100%;

    }

    label {
        transform: rotate(0deg);

        display: inline-block;
        width: 860px;
        height: 860px;
    }
</style>

<body>
    <div>
        <div class="datatime" data-id="1">
            <label for="">
                <div class="Y" style="transform:rotate(0deg)"></div>
                <div class="M" style="transform:rotate(0deg)"></div>
                <div class="D" style="transform:rotate(0deg)"></div>
                <div class="h" style="transform:rotate(0deg)"></div>
                <div class="m" style="transform:rotate(0deg)"></div>
                <div class="s" style="transform:rotate(0deg)"></div>
                <div class="bg" style="transform:rotate(0deg)"></div>
            </label>
        </div>
    </div>
    <script>
        var dataM = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
        var dataD = ['一号', '二号', '三号', '四号', '五号', '六号', '七号', '八号', '九号', '十号', '十一号', '十二号', '十三号', '十四号', '十五号', '十六号', '十七号', '十八号', '十九号', '二十号', '二十一号', '二十二号', '二十三号', '二十四号', '二十五号', '二十六号', '二十七号', '二十八号', '二十九号', '三十号', '三十一号']
        var datah = ['十二点', '一点', '二点', '三点', '四点', '五点', '六点', '七点', '八点', '九点', '十点', '十一点',]
        var datam = ['一分', '二分', '三分', '四分', '五分', '六分', '七分', '八分', '九分', '十分', '十一分', '十二分', '十三分', '十四分', '十五分', '十六分', '十七分', '十八分', '十九分', '二十分', '二十一分', '二十二分', '二十三分', '二十四分', '二十五分', '二十六分', '二十七分', '二十八分', '二十九分', '三十分', '三十一分', '三十二分', '三十三分', '三十四分', '三十五分', '三十六分', '三十七分', '三十八分', '三十九分', '四十分', '四十一分', '四十二分', '四十三分', '四十四分', '四十五分', '四十六分', '四十七分', '四十八分', '四十九分', '五十分', '五十一分', '五十二分', '五十三分', '五十四分', '五十五分', '五十六分', '五十七分', '五十八分', '五十九分', '六十分',]
        var datas = ['一秒', '二秒', '三秒', '四秒', '五秒', '六秒', '七秒', '八秒', '九秒', '十秒', '十一秒', '十二秒', '十三秒', '十四秒', '十五秒', '十六秒', '十七秒', '十八秒', '十九秒', '二十秒', '二十一秒', '二十二秒', '二十三秒', '二十四秒', '二十五秒', '二十六秒', '二十七秒', '二十八秒', '二十九秒', '三十秒', '三十一秒', '三十二秒', '三十三秒', '三十四秒', '三十五秒', '三十六秒', '三十七秒', '三十八秒', '三十九秒', '四十秒', '四十一秒', '四十二秒', '四十三秒', '四十四秒', '四十五秒', '四十六秒', '四十七秒', '四十八秒', '四十九秒', '五十秒', '五十一秒', '五十二秒', '五十三秒', '五十四秒', '五十五秒', '五十六秒', '五十七秒', '五十八秒', '五十九秒', '六十秒',]
        var bg = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
        var datay = ''
        var html = ''
        var color = true

        var myDate = new Date();
        var d = new Date(myDate.getFullYear(), myDate.getMonth() + 1, 0);
        var days = d.getDate();


        html = ''
        var lengths = 0
        switch (days) {
            case 28:
                dataD.length = 28
                lengths = 360 / 28
                break;

            case 29:
                dataD.length = 29
                lengths = 360 / 29
                break;

            case 30:
                dataD.length = 30
                lengths = 360 / 30
                break;

            case 31:
                lengths = 360 / 31
                break;
        }


        setTimeout(() => {
            var index6 = 0
            var param = setInterval(() => {
                console.log(index6)
                if (index6 < dataM.length) {
                    if (index6 == 0) {
                        $('.M').append('<span  " style="transform: rotate(0deg)translateX(50%);line-height: 160px;;padding-left:50%">' + dataM[index6] + '</span>')
                    } else {
                        $('.M').append('<span  " style="transform: rotate(' + index6 * 30 + 'deg)translateX(50%);line-height: 160px;;padding-left:50%">' + dataM[index6] + '</span>')
                    }

                    index6++
                } else {
                    clearInterval(param)
                }
            }, 100)
        }, 100);

        setTimeout(() => {
            var index5 = 0
            var param = setInterval(() => {
                if (index5 < dataD.length) {
                    if (index5 == 0) {
                        $('.D').append('<span  " style="transform: rotate(0deg)translateX(50%);line-height: 300px;;padding-left:50%">' + dataD[index5] + '</span>')
                    } else {
                        $('.D').append('<span  " style="transform: rotate(' + index5 * lengths + 'deg)translateX(50%);line-height: 300px;;padding-left:50%">' + dataD[index5] + '</span>')
                    }

                    index5++
                } else {
                    clearInterval(param)
                }
            }, 10)
        }, 300);

        setTimeout(() => {
            var index4 = 0

            var param = setInterval(() => {
                if (index4 < bg.length) {
                    $('.bg').append('<span  " style="transform: rotate(' + index4 * (360 / 7) + 'deg)translateX(50%);line-height: 450px;;padding-left:50%"">' + bg[index4] + '</span>')
                    index4++
                } else {
                    clearInterval(param)
                }
            }, 100)
        }, 600);

        setTimeout(() => {
            var index3 = 0
            var param = setInterval(() => {
                if (index3 < datah.length) {
                    $('.h').append('<span  " style="transform: rotate(' + index3 * (360 / 12) + 'deg)translateX(50%);line-height: 570px;;padding-left:50%"">' + datah[index3] + '</span>')
                    index3++
                } else {
                    clearInterval(param)
                }
            }, 100)
        }, 900);

        setTimeout(() => {
            var index2 = 0
            var param = setInterval(() => {
                if (index2 < datam.length) {
                    $('.m').append('<span  " style="transform: rotate(' + index2 * 6 + 'deg)translateX(50%);line-height: 700px;;padding-left:50%">' + datam[index2] + '</span>')
                    index2++
                } else {
                    clearInterval(param)
                }
            }, 10)
        }, 1200);

        setTimeout(() => {
            var index1 = 0
            var param = setInterval(() => {
                if (index1 < datas.length) {
                    $('.s').append('<span  " style="transform: rotate(' + index1 * 6 + 'deg)translateX(50%);line-height: 860px;;padding-left:50%"">' + datas[index1] + '</span>')
                    index1++
                } else {
                    clearInterval(param)
                }
            }, 10)
        }, 1500);
        setTimeout(() => {
            $('.Y').html(digitize(datay))
            $('.Y').show(1000)
        }, 2000)

        $('.Y').click(function () {
            console.log(color)
            if (!color) {
                console.log(color)
                $('body').css({ 'background': '#000', 'color': '#fff' })
                color = true
                $(".Y").append("<style>.Y::after{background: #fff}.Y::before{background: #fff}</style>")
            } else {
                $('body').css({ 'background': '#fff', 'color': '#000' })
                color = false
                $(".Y").append("<style>.Y::after{background: #00000063}.Y::before{background: #00000063}</style>")

            }

        })
        var times = myDate.getSeconds()
        var timem = myDate.getMinutes()
        var timeh = myDate.getHours()
        var timeD = myDate.getDate();
        var timeM = myDate.getMonth()
        var datay = myDate.getFullYear()
        var xinqi = new Date().getDay()
        if (timeh > 12) {
            timeh = timeh - 12
        }
        var arrtssss = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
        function digitize(n) {  //接受一个number类参数,拆分成一个数组并返回

            var str = n + "";    //加上空字符中,把接收的参数转换为字符串
            var arr = [];         //声明结果空数组,稍后返回
            str.split("").forEach(function (item) {   //调用split,以空字符串为分隔符切割字符串并返回数组,在数组上调用forEach方法
                arr.push(parseInt(item));    //对传入的每个字符用pasreInt转换为数字并压入arr数组
            })

            let text = []
            var dataarr = ''
            arr.forEach((tien) => {

                text.push(arrtssss[tien]);
                dataarr = text.join("");

            })
            return dataarr  //返回结果数组
        }

        $('.Y').html(digitize(datay))

        timeD--
        timem--
        setTimeout(() => {
            let index_list = $(".s").children('span')
            let index_list1 = $(".m").children('span')
            let index_list2 = $(".h").children('span')
            let index_list3 = $(".D").children('span')
            let index_list4 = $(".M").children('span')
            let index_list5 = $(".bg").children('span')


            index_list.eq(times).css('color', '#ff0000')
            index_list1.eq(timem).css('color', '#ff0000')
            console.log(timeh)

            if (timeh > 11) {
                timeh = timeh - 12

                index_list2.eq(timeh).css('color', '#ff0000')
            } else {
                index_list2.eq(timeh).css('color', '#ff0000')

            }
            index_list3.eq(timeD).css('color', '#ff0000')
            index_list4.eq(timeM).css('color', '#ff0000')
            index_list5.eq(xinqi).css('color', '#ff0000')

            setInterval(() => {
                index_list.css('color', '')
                index_list1.css('color', '')
                index_list2.css('color', '')
                index_list3.css('color', '')
                index_list4.css('color', '')
                index_list5.css('color', '')
                var myDate = new Date();
                times = myDate.getSeconds()
                timem = myDate.getMinutes()
                timeh = myDate.getHours()
                timeD = myDate.getDate();
                timeM = myDate.getMonth()
                datay = myDate.getFullYear()
                xinqi = myDate.getDay()

                if (timeM == 0 && timeh == 0 && timeD == 0 && timem == 0 && times < 1) {
                    var arrtssss = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
                    function digitize(n) {  //接受一个number类参数,拆分成一个数组并返回

                        var str = n + "";    //加上空字符中,把接收的参数转换为字符串
                        var arr = [];         //声明结果空数组,稍后返回
                        str.split("").forEach(function (item) {   //调用split,以空字符串为分隔符切割字符串并返回数组,在数组上调用forEach方法
                            arr.push(parseInt(item));    //对传入的每个字符用pasreInt转换为数字并压入arr数组
                        })

                        let text = []
                        var dataarr = ''
                        arr.forEach((tien) => {

                            text.push(arrtssss[tien]);
                            dataarr = text.join("");

                        })
                        return dataarr  //返回结果数组
                    }

                    $('.Y').html(digitize(datay))
                }
                if (timeD == 0 && timeh == 0 && timem == 0 && times < 1) {
                    var myDate = new Date();
                    var d = new Date(myDate.getFullYear(), myDate.getMonth() + 1, 0);
                    var days = d.getDate();
                    html = ''
                    lengths = 0
                    switch (days) {
                        case 28:
                            datam.length = 28
                            lengths = 360 / 28
                            break;

                        case 29:
                            datam.length = 29
                            lengths = 360 / 29
                            break;

                        case 30:
                            datam.length = 30
                            lengths = 360 / 30
                            break;

                        case 31:
                            lengths = 360 / 31
                            break;
                    }
                    var index6 = 0
                    $('.M').html('')
                    var param = setInterval(() => {
                        console.log(index6)
                        if (index6 < dataM.length) {
                            if (index6 == 0) {
                                $('.M').append('<span  " style="transform: rotate(0deg)translateX(50%);line-height: 160px;;padding-left:50%">' + dataM[index6] + '</span>')
                            } else {
                                $('.M').append('<span  " style="transform: rotate(' + index6 * 30 + 'deg)translateX(50%);line-height: 160px;;padding-left:50%">' + dataM[index6] + '</span>')
                            }

                            index6++
                        } else {
                            clearInterval(param)
                        }
                    }, 100)

                }
                $('.s').css('transform', 'rotate(' + -times * 6 + 'deg)')
                $('.m').css('transform', 'rotate(' + - (timem - 1) * 6 + 'deg)')
                $('.h').css('transform', 'rotate(' + -timeh * 30 + 'deg)')
                $('.D').css('transform', 'rotate(' + -(timeD - 1) * lengths + 'deg)')
                $('.M').css('transform', 'rotate(' + -timeM * 30 + 'deg)')
                $('.bg').css('transform', 'rotate(' + -xinqi * (360 / 7) + 'deg)')



                index_list.eq(times).css('color', '#ff0000')
                timem--
                index_list1.eq(timem).css('color', '#ff0000')
                if (timeh > 11) {
                    timeh = timeh - 12

                    index_list2.eq(timeh).css('color', '#ff0000')
                } else {
                    timeh
                    index_list2.eq(timeh).css('color', '#ff0000')
                }
                timeD--
                index_list3.eq(timeD).css('color', '#ff0000')
                index_list4.eq(timeM).css('color', '#ff0000')

                index_list5.eq(xinqi).css('color', '#ff0000')
            }, 500)

        }, 3000);

    </script>
</body>

</html>

纯属个人爱好,之前写的辣鸡布局还有js和动画
这是下载链接 或者直接复制也行 不过要引入JQ文件 因为用JQ写的
下载链接
写的很粗糙,小白一个多多包涵

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值