雙十一倒計時效果

一、必備基礎知識

1.置換元素

我們知道html元素可以分爲行內元素塊級元素。在行內元素中,有一些特殊的元素img、input、select、textarea、button、label,它們擁有內在的尺寸,可以設置寬和高,這類元素稱作 置換元素

<span style="width:50px;height:50px;border:1px solid gray">Hello</span>

在body裏面寫上一段代碼,我們在瀏覽器查看。可以發現並沒有什麼效果。因爲span元素沒有內在的尺寸,我們可以把span元素變成塊級元素。下面我們先認識display屬性(元素的顯示方式)

  • display:none 可以是把元素隱藏起來,不可見
  • display:block 塊級元素
  • display:inline 行內元素
  • display:inline-block 行內元素,同時繼承了塊級元素的一些屬性(比如擁有內在尺寸)

這裏只介紹幾個display元素常用的值。給span元素添加display屬性就可以看到有效果了

<span style="width:50px;height:50px;display:inline-block;border:1px solid gray">Hello</span>

2.setInterval()函數和clearInterval()函數

如果我們想過多少時間去做某件事情,就可以用到setInterval()函數了。這個函數有兩個參數,第一個參數是要執行的事情,第二個參數是時間間隔。clearInterval()函數可以清除定時器函數,有一個參數,該參數是定時器函數的名。在html頁面添加一個button,點擊時控制檯將不會輸出。
ctrl+shift+i或f12 可以開啓開發人員工具調試網頁,看到控制檯的輸出

var sayHello=setInterval(function(){
        for(i=0;i<10;i++){
            console.log(i);
        }
},1000)
$("#stop").click(function(){
    clearInterval(sayHello);
})

3.取模和取餘數

10/3表示爲10除以3
10%3表示對10除以3取餘數
parseInt(expression):對錶達式取模,保留整數部分
關於時間的函數這裏就不介紹了,可以看日期控件

二、小試牛刀

思路:雙十一的時間2016年11月11日00:00減去當前的時間,得到相差的時間戳,然後對這個時間戳進行細節處理。

效果圖

這裏寫圖片描述

css代碼

<style type="text/css">
       #date,#month,#hours,#minutes,#seconds,#rDay,#rHours,#rMinutes,#rSeconds
       {
              width:60px;
              border:1px solid gray;color:black;
              display: inline-block;
              text-align:center;

      }          
      .margin_right{margin-right:-15px;}

      .box1{
                  width:516px;
                  height:35px;
                  font-size:30px;
                }
  </style>

html代碼

<body>
        <h2> 當前時間:</h2><div class='box1'>
                                  <span id='month' ></span><span class="margin_right"></span>
                                  <span id='date' ></span><span ></span>
                                  <span id='hours'></span><span class="margin_right">:</span>
                                  <span id='minutes'  ></span><span class="margin_right">:</span>
                                  <span id='seconds'  ></span>
                                  </div>
       <h2>距離雙十一還有:</h2><div class="box1">
                                                   <span id="rDay"></span><span class="margin_right"></span>
                                                    <span id='rHours'></span><span class="margin_right"></span>
                                                    <span id='rMinutes'></span><span class="margin_right"></span>
                                                    <span id='rSeconds'></span>
                                               </div>
</body>

script代碼

<script type="text/javascript" src='../JQUERY/js/jquery-2.2.1.js'></script>
<script type="text/javascript">

       $(function(){
              var today=new Date();
              $("#month").text(today.getMonth()+1);
              $("#date").text(today.getDate());
                      var formate=function (type){
                          if(type<10){
                             type='0'+type;
                             return type;
                          }else{
                              return type;
                          }
                      }

            var time=setInterval(function(){
                    now=new Date();
                    hours=now.getHours();
                    minutes=now.getMinutes();
                    seconds=now.getSeconds();
                    // if(seconds<10){
                    //     seconds='0'+seconds;
                    // }
                    //  if(minutes<10){
                    //     minutes='0'+minutes;
                    // }
                    //  if(hours<10){
                    //     hours='0'+hours;
                    // }
                      seconds=formate(seconds);
                      minutes=formate(minutes);
                      hours=formate(hours);
                     $("#hours").text(hours);
                    $("#minutes").text(minutes);
                    $("#seconds").text(seconds);


            },1000);

      var remianTime=setInterval(function(){
                  var now=new Date();
                  var discountDay=new Date('2016-11-11 00:00');
                  var discountDaySeconds=Date.parse(discountDay);
                  var todaySeconds=Date.parse(now);
                  var totalRemainSeconds=discountDaySeconds-todaySeconds;      //剩下的
                  var remainDay=parseInt(totalRemainSeconds/(24*60*60*1000));   //parseInt保留整數部分
                  var dayRemainer=totalRemainSeconds%(24*60*60*1000)
                  var remainHours=parseInt(dayRemainer/(60*60*1000)); 
                  var hoursRemainer=dayRemainer%(60*60*1000);
                  var remianMinutes=parseInt(hoursRemainer/(60*1000));
                  var minutesRemainer=hoursRemainer%(60*1000);
                  var remainSeconds=parseInt(minutesRemainer/1000);
                    remainDay=formate(remainDay);
                    remainHours=formate(remainHours);
                    remianMinutes=formate(remianMinutes);
                    remainSeconds=formate(remainSeconds);

                $("#rDay").text(remainDay);
                $("#rHours").text(remainHours);
                $("#rMinutes").text(remianMinutes);
                $("#rSeconds").text(remainSeconds);

      },1000);

       })
     </script>

分析

1)頁面部分可以分爲兩塊,一個是當前的時間,一個距離雙十一的時間。對應的javascript部分也分爲兩個部分。其實就是倆個定時器,因爲這裏每一秒都要顯示時間。
2)第一個定時器部分,就是利用getMonth()等方法獲取當前時間的月日和時分秒等,並把取得的值用$(selector).text()傳給頁面。
3)全局函數formate()的功能是當時、分、秒爲個位數時,自動給補一個零。如果有多次實現相同功能時,我們可以嘗試封裝函數。

 var formate=function (type){
                          if(type<10){
                             type='0'+type;
                             return type;
                          }else{
                              return type;
                          }
                      }

4)第二個定時器部分,首先得到當前時間和雙十一相差的時間戳,一天等於24*60*60*1000毫秒,利用parseInt()獲取剩餘天數。對相差的時間戳進行取餘操作得到除了天數之外剩餘的時間,然後是對“時”的處理,一小時等於60*60*1000毫秒,利用parseInt() 對天數剩下的時間戳進行處理,獲得剩餘時數。 分、秒也是相同的一級一級往下的操作。

var now=new Date();
                  var discountDay=new Date('2016-11-11 00:00');
                  var discountDaySeconds=Date.parse(discountDay);
                  var todaySeconds=Date.parse(now);
                  var totalRemainSeconds=discountDaySeconds-todaySeconds;      //剩下的
                  var remainDay=parseInt(totalRemainSeconds/(24*60*60*1000));   

有誤之處歡迎指正,謝謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章