js特效3(Date对象)

1.九宫格布局

九宫格盒子所在的行列与盒子的总列数有关
行 = 盒子的下标 / 总列数;
列 = 盒子的下标 % 总列数;

<script>
    /*九宫格盒子所在的行列与盒子的总列数有关
    行 = 盒子的下标 / 总列数;
    列 = 盒子的下标 % 总列数;*/
    window.onload = function (ev) {
        f1('btn1').addEventListener('click',function (ev1) {
            f(3,f1('bottom'));
        });
        f1('btn2').addEventListener('click',function (ev1) {
            f(4,f1('bottom'));
        });
        f1('btn3').addEventListener('click',function (ev1) {
            f(5,f1('bottom'));
        });
    };
    function f1(id) {
        return document.getElementById(id);
    }
    /**
     * 九宫格布局
     * @param allcols 行数
     * @param parentNode 父盒子
     */
    function f(allcols, parentNode) {
        var boxW = 220, boxH = 360, margin = 15;
        for (var i = 0; i<parentNode.children.length; i++) {
            //求出当前盒子所在的行和列
            var row = Math.floor(i / allcols);
            var col = Math.floor(i % allcols);
            //盒子的定位
            var area = parentNode.children[i];
            area.style.position = 'absolute';
            area.style.left = col * (boxW + margin) + 'px';
            area.style.top = row *(boxH + margin) + 'px';
        }
    }
</script>

2.Data对象

(1)Date对象基于1970年1月1日(世界标准时间)起的毫秒数
(2)基本属性

	var Xdata = new Date();//当前时间
    //返回毫秒数,当前时间距1970年1月1日的毫秒时间
    document.write(Xdata.getTime() + '<br>'); 
    //返回时间的毫秒
 document.write(Xdata.getMilliseconds() + '<br>'); 
    //返回秒
    document.write(Xdata.getSeconds() + '<br>'); 
    //返回分钟
    document.write(Xdata.getMinutes() + '<br>'); 
    //返回小时
    document.write(Xdata.getHours() + '<br>'); 
    //返回星期几,0周日,6周六
    document.write(Xdata.getDate() + '<br>'); 
    //返回当月的第几天
    document.write(Xdata.getDay() + '<br>'); 
    //返回月份,从0开始,如3月是2
    document.write(Xdata.getMonth() + '<br>'); 
    //返回4位的年份,如2020
    document.write(Xdata.getFullYear() + '<br>'); 
    //你想要的时间
    var Ndata = new Date('2020/4/08 13:14:13');
    document.write(Ndata);

案例1:格式化时间

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>格式化时间</title>
</head>
<body>
<script>
    function fdata(d) {
        //验证
        if (!d instanceof Date){
            return;
        }
        var year = d.getFullYear();
        var mouth = d.getMonth() +1;
        var date = d.getDate();
        var hour = d.getHours();
        var min = d.getMinutes();
        var sec = d.getSeconds();
        //转换格式 yyyy--mm--dd hh:mm:ss
        mouth = mouth <'10' ? '0' + mouth : mouth;
        date = date <'10' ? '0' + date : date;
        min = min <'10' ? '0' + min : min;
        sec = sec <'10' ? '0' + sec : sec;
        hour = hour <'10' ? '0' + hour : hour;
        return year + '--' + mouth + '--' + date + ' ' + hour + ':' + min + ':' + sec;
    }
    var tim = fdata(new Date());
    document.write(tim);
</script>
</body>
</html>

3.定时器

(1)需求
①循环执行:js的程序执行速度是非常快的,如果希望一段程序可以每隔一段时间执行一次,可以使用定时器调用
setInterval(函数或者语句,时间单位毫秒);

<script>
    //循环执行
    setInterval(function () {
        document.write('哈哈哈');
     },1000)//单位是毫秒,1000毫秒是1秒
</script>
<script>
    //循环执行
    setInterval('document.write(\'啦啦啦\');',1000);
</script>
<script>
    //循环执行
    function f() {
        document.write("lalalal");
    }
    setInterval(f,1000);
    //不带括号是只想要这个函数,带()是想要函数的结果
</script>

案例1.倒计时鲜花表白

<body>
<div id="time">5</div>
<img src="image/flower.jfif" id="flo">
<script>
    window.onload = function (ev) {
        var date = setInterval(function () {
            f('time').innerText -= 1;
            //到0清除定时器
            if (f('time').innerText === '0'){
                clearInterval(date);
                f('flo').style.display = 'block';
                f('time').style.display = 'none';
            }
        },1000);
    };
    function f(id) {
        return  document.getElementById(id);
    }
</script>
</body>

案例2:放假倒计时

<body>
<div class="big">
    <div id="day" class="box"></div>
    <div id="hour" class="box"></div>
    <div id="min" class="box"></div>
    <div id="sec" class="box"></div>
</div>

<script>
    window.onload = function (ev) {
        var day = f1('day'), hour = f1('hour'), min = f1('min'), sec = f1('sec');
        var Xtime,Xdate,Ndate,Salldate,Sallmin;
        //定义将来时间
        var Ntime = new Date('2020/05/05 00:00:00');
        //定时器
        setInterval(function (ev1) {
            Xtime = new Date();//获取当前时间
            Xdate = Xtime.getTime();//当前时间距1970年1月1日的毫秒时间
            Ndate = Ntime.getTime();
            //两者相差所有的毫秒数
            Salldate  = Ndate - Xdate;
            //转换
            Sallmin = parseInt(Salldate / 1000); //所有秒
            var d = f(parseInt(Sallmin / 3600 / 24)); //天
            var Shour = f(parseInt(Sallmin / 3600 % 24)); //时
            var Smin =f(parseInt(Sallmin / 60 % 60)); //分
            var Ssec = f(parseInt(Sallmin %60)); //秒
            day.innerText =d ;
            hour.innerText =Shour ;
            min.innerText =Smin;
            sec.innerText =Ssec;
        },1000);
        function f1(id) {
            return document.getElementById(id);
        }
        function f(num) {
            return  num <  10 ? '0' + num : num;
        }
    };

</script>
</body>

②定时执行:某一段程序需要在延迟多少时间后执行,可以使用定时器调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值