鍍金池/ 問(wèn)答/HTML/ 如何通過(guò)函數(shù)或者按鍵控制秒表?

如何通過(guò)函數(shù)或者按鍵控制秒表?

1.在網(wǎng)上粘了一個(gè)秒表的html代碼,可是希望通過(guò)執(zhí)行某個(gè)函數(shù)或者按鍵來(lái)控制秒表的開(kāi)始和暫停。

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">

<style type="text/css">
body{
 background:white;
}
.container {
 padding: 50px;
 text-align: center;
}

.timer {
 padding: 10px;
 background: -webkit-linear-gradient(top, #222, #444);
 background: -moz-linear-gradient(top, #222, #444);
 background: -ms-linear-gradient(top, #222, #444);
 background: -o-linear-gradient(top, #222, #444);
 background: linear-gradient(top, #222, #444);
 overflow: hidden;
 display: inline-block;
 border: 7px solid #efefef;
 border-radius: 5px;
 position: relative; 
 box-shadow: inset 0 -2px 10px 1px rgba(0, 0, 0, 0.75), 0 5px 20px -10px rgba(0, 0, 0, 1);
}

.cell {
 /*只顯示一位數(shù)字. 高度 = 數(shù)字的行高,寬度 = 數(shù)字的寬度*/
 width: 0.60em;
 height: 40px;
 font-size: 50px;
 overflow: hidden;
 position: relative;
 float: left;
}

.numbers {
 width: 0.6em;
 line-height: 40px;
 font-family: digital, arial, verdana;
 text-align: center;
 color: #fff;
 position: absolute;
 top: 0;
 left: 0;
 /*數(shù)字發(fā)光效果*/
 text-shadow: 0 0 5px rgba(255, 255, 255, 1);
}

/*秒表控制器樣式*/
#timer_controls {
 margin-top: -5px;
}
#timer_controls label {
 cursor: pointer;
 padding: 5px 10px;
 background: #efefef;
 font-family: arial, verdana, tahoma;
 font-size: 11px;
 border-radius: 0 0 3px 3px;
}
input[name="controls"] {display: none;}

/*Control code*/
/*秒表暫停運(yùn)轉(zhuǎn)*/
#stop:checked~.timer .numbers {
 -webkit-animation-play-state: paused;
 -moz-animation-play-state: paused;
 -o-animation-play-state: paused;
 -ms-animation-play-state: paused;
 animation-play-state: paused;
}
/*秒表開(kāi)始運(yùn)轉(zhuǎn)*/
#start:checked~.timer .numbers {
  -webkit-animation-play-state: running;
  -moz-animation-play-state: running;
  -o-animation-play-state: running;
  -ms-animation-play-state: running;
  animation-play-state: running;
}
/*重置秒表*/
#reset:checked~.timer .numbers {
  -webkit-animation: none;
  -moz-animation: none;
  -o-animation: none;
  -ms-animation: none;
  animation: none;
}

.moveten {
 /*使用分步驟來(lái)移動(dòng)數(shù)字,10個(gè)數(shù)字即是10步*/
 -webkit-animation: moveten 1s steps(10, end) infinite;
 -moz-animation: moveten 1s steps(10, end) infinite;
 -o-animation: moveten 1s steps(10, end) infinite;
 -ms-animation: moveten 1s steps(10, end) infinite;
 animation: moveten 1s steps(10, end) infinite;
 /*默認(rèn)情況下動(dòng)畫停止不動(dòng)的*/
 -webkit-animation-play-state: paused;
 -moz-animation-play-state: paused;
 -o-animation-play-state: paused;
 -ms-animation-play-state: paused;
 animation-play-state: paused;
}
.movesix {
 -webkit-animation: movesix 1s steps(6, end) infinite;
 -moz-animation: movesix 1s steps(6, end) infinite;
 -o-animation: movesix 1s steps(6, end) infinite;
 -ms-animation: movesix 1s steps(6, end) infinite;
 animation: movesix 1s steps(6, end) infinite;
}

/*同步時(shí)間的速率*/
/*每秒十個(gè)數(shù)字,因此也需要十步*/
.second {
 -webkit-animation-duration: 10s;
 -moz-animation-duration: 10s;
 -o-animation-duration: 10s;
 -ms-animation-duration: 10s;
 animation-duration: 10s;
}
.tensecond {
  /*60 times .second*/
  -webkit-animation-duration: 60s;
  -moz-animation-duration: 60s;
  -o-animation-duration: 60s;
  -ms-animation-duration: 60s;
  animation-duration: 60s;
} 

.milisecond {
  /*1/10th of .second*/
  -webkit-animation-duration: 1s;
 -moz-animation-duration: 1s;
 -o-animation-duration: 1s;
 -ms-animation-duration: 1s;
 animation-duration: 1s;
} 
.tenmilisecond {
  -webkit-animation-duration: 0.1s;
  -moz-animation-duration: 0.1s;
  -ms-animation-duration: 0.1s;
  -o-animation-duration: 0.1s;
  animation-duration: 0.1s;
}
.hundredmilisecond {
  -webkit-animation-duration: 0.01s;
  -moz-animation-duration: 0.01s;
  -o-animation-duration: 0.01s;
  -ms-animation-duration: 0.01s;
  animation-duration: 0.01s;
}

.minute {
  /*60 times .second*/
  -webkit-animation-duration: 600s;
 -moz-animation-duration: 600s;
 -o-animation-duration: 600s;
 -ms-animation-duration: 600s;
 animation-duration: 600s;
} 
.tenminute {
  /*60 times .minute*/
  -webkit-animation-duration: 3600s;
 -moz-animation-duration: 3600s;
 -ms-animation-duration: 3600s;
 -o-animation-duration: 3600s;
 animation-duration: 3600s;
} 

.hour {
  /*60 times .minute*/
  -webkit-animation-duration: 36000s;
 -moz-animation-duration: 36000s;
 -ms-animation-duration: 36000s;
 -o-animation-duration: 36000s;
 animation-duration: 36000s;
} 
.tenhour {
  /*10 times .hour*/
  -webkit-animation-duration: 360000s;
 -moz-animation-duration: 360000s;
 -o-animation-duration: 360000s;
 -ms-animation-duration: 360000s;
 animation-duration: 360000s;
} 
@-webkit-keyframes moveten {
 0% {top: 0;}
 100% {top: -400px;} 
 /*height = 40. digits = 10. hence -400 to move it completely to the top*/
}

@-webkit-keyframes movesix {
 0% {top: 0;}
 100% {top: -240px;} 
 /*height = 40. digits = 6. hence -240 to move it completely to the top*/
}

@-moz-keyframes moveten {
 0% {top: 0;}
 100% {top: -400px;} 
 /*height = 40. digits = 10. hence -400 to move it completely to the top*/
}

@-moz-keyframes movesix {
 0% {top: 0;}
 100% {top: -240px;} 
 /*height = 40. digits = 6. hence -240 to move it completely to the top*/
}
@-o-keyframes moveten {
 0% {top: 0;}
 100% {top: -400px;} 
 /*height = 40. digits = 10. hence -400 to move it completely to the top*/
}

@-o-keyframes movesix {
 0% {top: 0;}
 100% {top: -240px;} 
 /*height = 40. digits = 6. hence -240 to move it completely to the top*/
}
@-ms-keyframes moveten {
 0% {top: 0;}
 100% {top: -400px;} 
 /*height = 40. digits = 10. hence -400 to move it completely to the top*/
}

@-ms-keyframes movesix {
 0% {top: 0;}
 100% {top: -240px;} 
 /*height = 40. digits = 6. hence -240 to move it completely to the top*/
}
@keyframes moveten {
 0% {top: 0;}
 100% {top: -400px;} 
 /*height = 40. digits = 10. hence -400 to move it completely to the top*/
}

@keyframes movesix {
 0% {top: 0;}
 100% {top: -240px;} 
 /*height = 40. digits = 6. hence -240 to move it completely to the top*/
}
/*Lets use a better font for the numbers*/
@font-face {
 font-family: 'digital';
 src: url('http://thecodeplayer.com/uploads/fonts/DS-DIGI.TTF');
 
} 
 </style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<div class="page">
 <section class="demo">
  <div class="container">
   <!-- time to add the controls -->
   <input id="start" name="controls" type="radio"  />
   <input id="stop" name="controls" type="radio" />
   <input id="reset" name="controls" type="radio" />
   <div class="timer">
    <div class="cell">
     <div class="numbers tenhour moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell">
     <div class="numbers hour moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell divider"><div class="numbers">:</div></div>
    <div class="cell">
     <div class="numbers tenminute movesix">0 1 2 3 4 5 6</div>
    </div>
    <div class="cell">
     <div class="numbers minute moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell divider"><div class="numbers">:</div></div>
    <div class="cell">
     <div class="numbers tensecond movesix">0 1 2 3 4 5 6</div>
    </div>
    <div class="cell">
     <div class="numbers second moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell divider"><div class="numbers">:</div></div>
    <div class="cell">
     <div class="numbers milisecond moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell">
     <div class="numbers tenmilisecond moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
    <div class="cell">
     <div class="numbers hundredmilisecond moveten">0 1 2 3 4 5 6 7 8 9</div>
    </div>
   </div>
   <!-- Lables for the controls -->
   <div id="timer_controls">
    <label for="start">開(kāi)始</label>
    <label for="stop">暫停</label>
    <label for="reset">清零</label>
    
   </div>
  </div>
</div>


</body>
</html>

    

目前只能通過(guò) 點(diǎn)擊 label 來(lái)實(shí)現(xiàn)開(kāi)始和暫停,嘗試過(guò)JavaScript動(dòng)態(tài)的改變input的value屬性時(shí),自動(dòng)觸發(fā)oninput、onchange事件,可是沒(méi)有成功。有更簡(jiǎn)單的方法實(shí)現(xiàn)嗎?
https://segmentfault.com/q/10...

圖片描述

回答
編輯回答
夏夕

使用自己定義事件,觸發(fā)input和change

2018年3月19日 13:23
編輯回答
晚風(fēng)眠

其實(shí)你看它控制的關(guān)鍵屬性是:

/*Control code*/
/*秒表暫停運(yùn)轉(zhuǎn)*/
#stop:checked~.timer .numbers {
 -webkit-animation-play-state: paused;
 -moz-animation-play-state: paused;
 -o-animation-play-state: paused;
 -ms-animation-play-state: paused;
 animation-play-state: paused;
}
/*秒表開(kāi)始運(yùn)轉(zhuǎn)*/
#start:checked~.timer .numbers {
  -webkit-animation-play-state: running;
  -moz-animation-play-state: running;
  -o-animation-play-state: running;
  -ms-animation-play-state: running;
  animation-play-state: running;
}
/*重置秒表*/
#reset:checked~.timer .numbers {
  -webkit-animation: none;
  -moz-animation: none;
  -o-animation: none;
  -ms-animation: none;
  animation: none;
}

就是用:checked偽類觸發(fā)兄弟元素.timer內(nèi)的.numbers,變更animation的樣式和狀態(tài),那么你一樣也可以給.numbers變更樣式啊。

2018年8月24日 19:55