首頁 web前端 H5教程 HTML5計時器實作方法

HTML5計時器實作方法

Mar 12, 2017 pm 05:03 PM

聽到計時器之後或許大家認為只有在js中可以實現,其實這種想法在你不知道有html5的情況下還能成立,下文為大家介紹下html5中是如何實現計時器的,有興趣的朋友不要錯過

html: 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame 
Remove this if you use the .htaccess --> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<title>HTML5 Timer for work-relax balance</title> 
<meta name="description" content=""> 
<meta name="author" content="kevin"> 
<meta name="viewport" content="width=device-width; initial-scale=1.0"> 
<!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references --> 
<link rel="shortcut icon" href="/favicon.ico"/> 
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
<script> 
countDownSeconds = 60; 
var handle = null; 
//window load 
function onLoadWindow() { 
aCanvas = document.getElementById("countdownCanvas"); 
context = aCanvas.getContext("2d"); 
var canvasText = "Press to Start..."; 
var xPos = aCanvas.width / 2; 
var yPos = aCanvas.height / 2; 
context.font = "12pt Century Gothic"; 
context.fillStyle = "#008000;"; 
context.textAlign = "center"; 
context.textBaseline = "middle"; 
context.fillText(canvasText, xPos, yPos); 
} 
function updateCanvas(theContext, width, height) { 
if (countDownSeconds < 0) { 
clearInterval(handle); 
handle = null; 
alert("hey, time is up!"); 
return 0; 
} 
minStr = Math.floor(countDownSeconds / 60); 
secStr = countDownSeconds % 60; 
if (minStr < 10) { 
minStr = "0" + minStr; 
} 
if (secStr < 10) { 
secStr = "0" + secStr; 
} 
context.clearRect(0, 0, width, height); 
context.font = "24pt Century Gothic"; 
context.fillText(minStr + " : " + secStr, width / 2, height / 2); 
countDownSeconds--; 
} 
function startWorkCountDown() { 
if (handle != null) { 
clearInterval(handle); 
} 
countDownSeconds = document.getElementById("workIntervalInput").value * 60; 
timeDisplayCanvas = document.getElementById("countdownCanvas"); 
timeDisplayContext2D = timeDisplayCanvas.getContext("2d"); 
updateCanvas(timeDisplayContext2D, timeDisplayCanvas.width, timeDisplayCanvas.height); 
handle = setInterval(function() { 
updateCanvas(timeDisplayContext2D, timeDisplayCanvas.width, timeDisplayCanvas.height); 
}, 1000); 
} 
function startRestCountDown() { 
if (handle != null) { 
clearInterval(handle); 
} 
countDownSeconds = document.getElementById("restIntervalInput").value * 60; 
timeDisplayCanvas = document.getElementById("countdownCanvas"); 
timeDisplayContext2D = timeDisplayCanvas.getContext("2d"); 
updateCanvas(timeDisplayContext2D, timeDisplayCanvas.width, timeDisplayCanvas.height); 
handle = setInterval(function() { 
updateCanvas(timeDisplayContext2D, timeDisplayCanvas.width, timeDisplayCanvas.height); 
}, 1000); 
} 
</script> 
</head> 
<body onload="onLoadWindow()"> 
<p> 
<header> 
<h1>work-life balance timer</h1> 
</header> 
Please choose the work interval: 
<input name="workIntervalInput" id="workIntervalInput" type="number" value="25" min="15" max="45" step="5"/> 
minutes 

Please choose the rest interval: 
<input name="restIntervalInput" id="restIntervalInput" type="number" value="5" min="3" max="10" step="1"/> 
minutes 


<canvas id="countdownCanvas" width="300" height="50" style="border:2px solid black"> 
This is a canvas 
</canvas> 


<button onclick="startWorkCountDown()"> 
Work Hard 
</button> 
<button onclick="startRestCountDown()"> 
Take A Break 
</button> 
<footer> 
<p> 
&copy; Copyright Reserved 
</p> 
</footer> 
</p> 
</body> 
</html>
登入後複製

css3: 

/* 
* HTML5 ✰ Boilerplate 
* 
* What follows is the result of much research on cross-browser styling. 
* Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, 
* Kroc Camen, and the H5BP dev community and team. 
* 
* Detailed information about this CSS: h5bp.com/css 
* 
* ==|== normalize ========================================================== 
*/ 

/* ============================================================================= 
HTML5 display definitions 
========================================================================== */ 
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } 
header {text-shadow: #220000 0px 0px 10px 10px;} 
audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } 
audio:not([controls]) { display: none; } 
[hidden] { display: none; } 
/* ============================================================================= 
Base 
========================================================================== */ 
/* 
* 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units 
* 2. Force vertical scrollbar in non-IE 
* 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g 
*/ 
html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } 
body { margin: 0; font-size: 24px; line-height: 1.231;} 
body, button, input, select, textarea {font-family:"Century Gothic"; color:#008000} 
/* 
* Remove text-shadow in selection highlight: h5bp.com/i 
* These selection declarations have to be separate 
* Also: hot pink! (or customize the background color to match your design) 
*/ 
::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; } 
::selection { background: #fe57a1; color: #fff; text-shadow: none; } 

/* ============================================================================= 
Links 
========================================================================== */ 
a { color: #00e; } 
a:visited { color: #551a8b; } 
a:hover { color: #06e; } 
a:focus { outline: thin dotted; } 
/* Improve readability when focused and hovered in all browsers: h5bp.com/h */ 
a:hover, a:active { outline: 0; } 

/* ============================================================================= 
Typography 
========================================================================== */ 
abbr[title] { border-bottom: 1px dotted; } 
b, strong { font-weight: bold; } 
blockquote { margin: 1em 40px; } 
dfn { font-style: italic; } 
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } 
ins { background: #ff9; color: #000; text-decoration: none; } 
mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } 
/* Redeclare monospace font family: h5bp.com/j */ 
pre, code, kbd, samp { font-family: monospace, monospace; _font-family: &#39;courier new&#39;, monospace; font-size: 1em; } 
/* Improve readability of pre-formatted text in all browsers */ 
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } 
q { quotes: none; } 
q:before, q:after { content: ""; content: none; } 
small { font-size: 85%; } 
/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ 
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 
sup { top: -0.5em; } 
sub { bottom: -0.25em; } 

/* ============================================================================= 
Lists 
========================================================================== */ 
ul, ol { margin: 1em 0; padding: 0 0 0 40px; } 
dd { margin: 0 0 0 40px; } 
nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } 

/* ============================================================================= 
Embedded content 
========================================================================== */ 
/* 
* 1. Improve image quality when scaled in IE7: h5bp.com/d 
* 2. Remove the gap between images and borders on image containers: h5bp.com/e 
*/ 
img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } 
/* 
* Correct overflow not hidden in IE9 
*/ 
svg:not(:root) { overflow: hidden; } 

/* ============================================================================= 
Figures 
========================================================================== */ 
figure { margin: 0; } 

/* ============================================================================= 
Forms 
========================================================================== */ 
form { margin: 0; } 
fieldset { border: 0; margin: 0; padding: 0; } 
/* Indicate that &#39;label&#39; will shift focus to the associated form element */ 
label { cursor: pointer; } 
/* 
* 1. Correct color not inheriting in IE6/7/8/9 
* 2. Correct alignment displayed oddly in IE6/7 
*/ 
legend { border: 0; *margin-left: -7px; padding: 0; } 
/* 
* 1. Correct font-size not inheriting in all browsers 
* 2. Remove margins in FF3/4 S5 Chrome 
* 3. Define consistent vertical alignment display in all browsers 
*/ 
button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } 
/* 
* 1. Define line-height as normal to match FF3/4 (set using !important in the UA stylesheet) 
* 2. Correct inner spacing displayed oddly in IE6/7 
*/ 
button, input { line-height: normal; *overflow: visible; } 
/* 
* Reintroduce inner spacing in &#39;table&#39; to avoid overlap and whitespace issues in IE6/7 
*/ 
table button, table input { *overflow: auto; } 
/* 
* 1. Display hand cursor for clickable form elements 
* 2. Allow styling of clickable form elements in iOS 
*/ 
button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } 
/* 
* Consistent box sizing and appearance 
*/ 
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; } 
input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; } 
input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 
/* 
* Remove inner padding and border in FF3/4: h5bp.com/l 
*/ 
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 
/* 
* 1. Remove default vertical scrollbar in IE6/7/8/9 
* 2. Allow only vertical resizing 
*/ 
textarea { overflow: auto; vertical-align: top; resize: vertical; } 
/* Colors for form validity */ 
input:valid, textarea:valid { } 
input:invalid, textarea:invalid { background-color: #f0dddd; } 

/* ============================================================================= 
Tables 
========================================================================== */ 
table { border-collapse: collapse; border-spacing: 0; } 
td { vertical-align: top; } 

/* ==|== primary styles ===================================================== 
Author: 
========================================================================== */ 

/* ==|== non-semantic helper classes ======================================== 
Please define your styles before this section. 
========================================================================== */ 
/* For image replacement */ 
.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; } 
.ir br { display: none; } 
/* Hide from both screenreaders and browsers: h5bp.com/u */ 
.hidden { display: none !important; visibility: hidden; } 
/* Hide only visually, but have it available for screenreaders: h5bp.com/v */ 
.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } 
/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: h5bp.com/p */ 
.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } 
/* Hide visually and from screenreaders, but maintain layout */ 
.invisible { visibility: hidden; } 
/* Contain floats: h5bp.com/q */ 
.clearfix:before, .clearfix:after { content: ""; display: table; } 
.clearfix:after { clear: both; } 
.clearfix { zoom: 1; } 

/* ==|== media queries ====================================================== 
PLACEHOLDER Media Queries for Responsive Design. 
These override the primary (&#39;mobile first&#39;) styles 
Modify as content requires. 
========================================================================== */ 
@media only screen and (min-width: 480px) { 
/* Style adjustments for viewports 480px and over go here */ 
} 
@media only screen and (min-width: 768px) { 
/* Style adjustments for viewports 768px and over go here */ 
} 

/* ==|== print styles ======================================================= 
Print styles. 
Inlined to avoid required HTTP connection: h5bp.com/r 
========================================================================== */ 
@media print { 
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Black prints faster: h5bp.com/s */ 
a, a:visited { text-decoration: underline; } 
a[href]:after { content: " (" attr(href) ")"; } 
abbr[title]:after { content: " (" attr(title) ")"; } 
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don&#39;t show links for images, or javascript/internal links */ 
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } 
thead { display: table-header-group; } /* h5bp.com/t */ 
tr, img { page-break-inside: avoid; } 
img { max-width: 100% !important; } 
@page { margin: 0.5cm; } 
p, h2, h3 { orphans: 3; widows: 3; } 
h2, h3 { page-break-after: avoid; } 
} 
#startTimer{ 
position:inherit 
width:75px; 
height:20px; 
top:35px; 
left:25px; 
cursor:pointer 
} 
#stopTimer{ 
position:inherit; 
width:75px; 
height:20px; 
top:10px; 
left:25px; 
cursor:pointer 
} 
#countdownCanvas{ 
border-radius:25px; 
box-shadow:10px 10px 5px #888888; 
}
登入後複製


#

以上是HTML5計時器實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何將音頻添加到我的HTML5網站上? 如何將音頻添加到我的HTML5網站上? Mar 10, 2025 pm 03:01 PM

如何將音頻添加到我的HTML5網站上?

如何使用HTML5頁面可見性API檢測頁面何時可見? 如何使用HTML5頁面可見性API檢測頁面何時可見? Mar 13, 2025 pm 07:51 PM

如何使用HTML5頁面可見性API檢測頁面何時可見?

如何使用視口元標記來控制移動設備上的頁面縮放? 如何使用視口元標記來控制移動設備上的頁面縮放? Mar 13, 2025 pm 08:00 PM

如何使用視口元標記來控制移動設備上的頁面縮放?

如何使用地理位置API處理用戶位置隱私和權限? 如何使用地理位置API處理用戶位置隱私和權限? Mar 18, 2025 pm 02:16 PM

如何使用地理位置API處理用戶位置隱私和權限?

如何使用HTML5和JavaScript創建互動遊戲? 如何使用HTML5和JavaScript創建互動遊戲? Mar 10, 2025 pm 06:34 PM

如何使用HTML5和JavaScript創建互動遊戲?

如何將HTML5表單用於用戶輸入? 如何將HTML5表單用於用戶輸入? Mar 10, 2025 pm 02:59 PM

如何將HTML5表單用於用戶輸入?

如何使用HTML5通知API顯示桌面通知? 如何使用HTML5通知API顯示桌面通知? Mar 13, 2025 pm 07:57 PM

如何使用HTML5通知API顯示桌面通知?

如何將HTML5拖放API用於交互式用戶界面? 如何將HTML5拖放API用於交互式用戶界面? Mar 18, 2025 pm 02:17 PM

如何將HTML5拖放API用於交互式用戶界面?

See all articles