• js动态数字时钟


    js动态数字时钟

    主要用到知识点:

    • 主要是通过数组的一些方法,如:Array.from() Array.reduce() Array.find()
    • 时间的处理和渲染
    • js用到面向对象的写法

    实现的功能

    • 炫酷的数字时间效果
    • 直接看效果

    Alt

    html:

        <div class="wraper">
            <div class="column">
                <div class="item">0</div>
                <div class="item">1</div>
                <div class="item">2</div>
            </div>
            <div class="column ten"></div>
            <div class="colon">:</div>
            <div class="column six"></div>
            <div class="column ten"></div>
            <div class="colon">:</div>
            <div class="column six"></div>
            <div class="column ten"></div>
        </div>
    

    css:

        * {
            margin: 0;
            padding: 0;
        }
        html,
        body {
             100%;
            height: 100%;
            background-color: #0e141b;
        }
        .wraper {
             100%;
            height: 100%;
            text-align: center;
            overflow: hidden;
        }
        .column,
        .colon {
            display: inline-block;
            vertical-align: top;
            color: #fff;
            font-size: 86px;
            line-height: 86px;
            font-weight: 300;
            transform: translateY(50vh);
            margin-top: -43px;
            transition: all 0.3s;
        }
        .visible {
            opacity: 1;
            box-shadow: 0px 0px 20px #fff;
            border-radius: 5px;
        }
        .near1 {
         opacity: 0.7;
        }
        .near2 {
            opacity: 0.6;
        }
        .near3 {
            opacity: 0.4;
        }
        .far1 {
            opacity: 0.3;
        }
        .far2 {
            opacity: 0.2;
        }
        .far3 {
            opacity: 0.1;
        }
        .none {
            opacity: 0.05;
        }
    

    js:

        function Time(bom,use24){
            this.Bom = Array.from(bom);
            this.format = use24;
            this.classList = ['visible', 'near1', 'near2','near3', 'far1', 'far2', 'far3'];
            this.creatDom();
            this.setTime();
        }
        //生成dom元素
        Time.prototype.creatDom=function(){
            for(let i=0;i<6;i++){
                let odiv = "<div class='item'>"+i+"</div>";
                $('.six').append(odiv);
            }
            for(let i=0;i<10;i++){
                let idiv = "<div class='item'>" + i + "</div>";
                $('.ten').append(idiv);
            }
        }  
        //设置当前时间到页面
        Time.prototype.setTime = function(){
            let self =this;
            setInterval(function(){
                let presentTime = self.getTime();
                self.Bom.forEach((ele,index)=>{
                    var n = +presentTime[index];
                    var offset = n * 86;
                    $(ele).css({
                    marginTop:-43 - offset +'px'
                    })
                    Array.from(ele.children).forEach(function (ele1,index1){
                        $(ele1).attr('class', self.getClassName(n,index1));
                    })
                })
            },500)
        }
        Time.prototype.getClassName = function(n,i){
            let className = this.classList.find(function(item,index){
                return i - index === n || i + index === n;
            })
            // console.log(className)
            return className || 'none';
        }
        //获取当前时间并处理
        Time.prototype.getTime=function(){
            let Data = new Date();
            let timeArr =[];
            let timeStr = '';
            timeArr.push(this.format ? Data.getHours() : Data.getHours() % 12 || 12, Data.getMinutes(),Data.getSeconds());
            timeStr = timeArr.reduce(function(p,n){
                return p + ('0' + n).slice(-2);
            },'');
            return timeStr;
        }
        new Time($('.column'),true);
    

    参考自:腾讯课堂渡一教育

  • 相关阅读:
    vscode添加python文件头模板
    解决Win平台VSCode中Python在控制台输出中文乱码的问题
    Windows系统解决VSCode终端无法输入问题
    python中pip安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………或无法pip install packname安装依赖包
    GET和POST的本质区别
    文件名排序
    乱码加密解密
    jQuery.validator 自定义验证消息
    Oracle查询某个表被那些存储过程引用
    note4
  • 原文地址:https://www.cnblogs.com/sgs123/p/10790743.html
Copyright © 2020-2023  润新知