怕自己注意力不集中?来做一个属于自己的番茄闹钟把

首先

虽然这第一步不需要什么技术,但是也是非常重要的,那就是找一个好看的背景!你想啊,如果你做的闹钟外观看起来不怎么样或者说是你不喜欢的样式,那你会去用吗?(反正如果是我,我可能做完就放在那不会再打开了)所以,先不要想要去怎么构思代码,找背景才是关键!(我是找了好久,勉强找了一个能看的,简约且又像闹钟)给你们瞅瞅(emmm...不要吐槽!不要吐槽!) 

 

图片找好了那就要开始布局了,想想你的倒计时要放在哪里,以及时长的选择还有一些功能键的位置,因为我选的图片正好是居中放置的,所以其他的功能键也居中放看起来会正常点。 

进而 

页面布局好了,那就要开始构思代码了。我们先把重点部分写好 ,再写优化的功能部分。这里我们要实现的是倒计时功能,所以重点就是倒计时部分。既然跟时间有关,那自然而然就会想到Date() 对象,对!一开始我也是这么想的,但当你深入去构思代码的时候,发现其实根本不需要使用Date()!那不就简单多了,只需要把用户输入的时长,转化成毫秒或秒,再使用定时器,隔一秒就让转化后的时间减1(如果是毫秒就要减 1000),并每次减完再转化成时分秒显示到页面上。

                //转化为小时
                var h = parseInt((time / 1000)/60/60%12);
                //如果转化后的值小于10,就在前面添加0
                h = h >= 10 ? h : '0' + h;
                //转化为分钟
                var m = parseInt((time / 1000)/60%60);
                m = m >= 10 ? m : '0' + m;
                //转化为秒
                var s = parseInt((time / 1000)%60); 
                s = s >= 10 ? s : '0' + s;

 其次

 主要功能写好了,那就开始写必须要有的时常选择模块,这里我用了 select 标签做的,这时有人就问,用Input表单获取用户自己输入的时间不是体验感更好吗,但是你们想想如果用了Input,万一有人故意输入一些很长很长的并且带小数点的值,很明显这样去计算就没有什么意义,而且说不准还会导致程序的崩溃。所以与其这样,还不如设置几个比较常用的且合理的固定的值,让用户去选择,这里你们可以根据自己的喜好去设置。

        <select id="choice">
            <option>6秒</option>
            <option >10分钟</option>
            <option >30分钟</option>
            <option>60分钟</option>
            <option>120分钟</option>
        </select>  

 补充一个知识点:获取select中当前选中的值 

 k = parseInt($('#choice option:selected').text());

 最后

最后就是补充几个功能键,这里我做了开始、暂停、重置这三个功能,开始键里要做的就是开启定时器,和当用户按了暂停再继续在当前时间上倒计时,暂停按钮要做的就是清除定时器,重置按钮就是用来让页面初始化的,因为三个按钮功能都不一样,所以我就分开写了。

 $('.btn button').eq(0).on('click',function(){
            $('.hidden').hide();
            if(flag) {
                    Datetime(k);
                  //flag用来判断前一个状态是点完暂停还是重新开始的
                    flag = false;
                } else {
                   Obj(p);  
                }
        })

        $('.btn button').eq(1).on('click',function(){
            clearInterval(timer);
        })

        $('.btn button').eq(2).on('click',function(){
                //全部初始化
                clearInterval(timer);
                $('ul li').eq(0).html('00');
                $('ul li').eq(2).html('00');
                $('ul li').eq(4).html('00');
                flag = true;
                p = 0;
        })

补充 

为了让这个闹钟看起来没那么压抑,我还做了当时间到了以后,会提示说该休息了~伴着愉快的心情

  

完整代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jQuery.min.js"></script>
    <style>
        body {
            background-color: antiquewhite;
        }
        * {
            margin: 0;
            padding: 0;
            list-style: none;
            box-sizing: border-box;
        }
        .box {
            position: relative;
            width: 500px;
            height: 400px;
            margin: 100px auto;
        }
        .box img {
            width: 100%;
            height: 100%;
        }
        .box ul {
            position: absolute;
            top: 173px;
            left: 157px;
            display: flex;
        }
        ul li {
            width: 30px;
            height: 50px;
            margin: 0 2px;
            font-size: 30px;
            font-weight: 700;
            text-align: center;
            line-height: 50px;
            color:#ec6d31;
        }
        select {
            position: absolute;
            bottom: -46px;
            left: 50px;
            padding: 6px 18px;
            outline: none;
            background-color: rgb(246, 255, 127);
        }
        .btn {
            position: absolute;
            bottom: -46px;
            left: 205px;
        }
        .btn button {
            width: 60px;
            height: 30px;
            cursor: pointer;
            background-color: aquamarine;
            border: none;
            border-radius: 10px;
            font-weight: 700;
        }
        .btn button:hover {
            background-color:cornflowerblue;
        }
        .hidden {
            display: none;
            position: absolute;
            top: 100px;
            left: -381px;
        }
        .hidden img {
            width: 200px;
            height: 170px;
        }
        .hidden p {
            font-weight: 700;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="hidden">
            <img src="./images/小黄人.gif" alt="">
            <p>休息啦!可以耍去了!</p>
        </div>
        <img src="./images/时钟背景2.jpg" alt="">
        <ul>
            <li>00</li>
            <li>:</li>
            <li>00</li>
            <li>:</li>
            <li>00</li>
        </ul>
        <select id="choice">
            <option>6秒</option>
            <option >10分钟</option>
            <option >30分钟</option>
            <option>60分钟</option>
            <option>120分钟</option>
        </select>  
        <div class="btn">
            <button>开始</button>
            <button>暂停</button>
            <button>重置</button>
        </div>
    </div>

    <script>
      $(function(){
          var k = 0.1;
          var timer = null;
          var flag = true;
          var p = 0;
        //   Datetime(10);
        $('.btn button').eq(0).on('click',function(){
            $('.hidden').hide();
            if(flag) {
                    Datetime(k);
                    flag = false;
                } else {
                   Obj(p);  
                }
        })

        $('.btn button').eq(1).on('click',function(){
            clearInterval(timer);
        })

        $('.btn button').eq(2).on('click',function(){
                clearInterval(timer);
                $('ul li').eq(0).html('00');
                $('ul li').eq(2).html('00');
                $('ul li').eq(4).html('00');
                flag = true;
                p = 0;
        })

        $('#choice').on('change',function(){
             k = parseInt($('#choice option:selected').text());
             clearInterval(timer); 
             flag = true;
        })
        

        function Obj(time) {
               timer = setInterval(function(){
                var h = parseInt((time / 1000)/60/60%12);
                h = h >= 10 ? h : '0' + h;
                var m = parseInt((time / 1000)/60%60);
                m = m >= 10 ? m : '0' + m;
                var s = parseInt((time / 1000)%60); 
                s = s >= 10 ? s : '0' + s;
                $('ul li').eq(0).html(h);
                $('ul li').eq(2).html(m);
                $('ul li').eq(4).html(s);
                time-= 1000;
                p = time;
                if(time < 0) {
                    clearInterval(timer);
                    $('.hidden').show();
                    flag = true;
                }
            },1000)    
        }

        function Datetime(time){
            time = time * 60 * 1000;
            Obj(time);
            
        }
      })
    </script>
</body>
</html>

 

猜你喜欢

转载自blog.csdn.net/m0_53620413/article/details/121321758