最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)簡單的倒計時效果

 更新時間:2022年06月19日 10:14:03   作者:福州-司馬懿  
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡單的倒計時效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JavaScript實現(xiàn)簡單倒計時效果的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html>
<html>
? ? <head lang="en">
? ? ? ? <meta charset="utf8">
? ? ? ? <meta http-equiv="X-UA-Compatible" cotent="IE=edge,chrome=1">
? ? ? ? <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=2.0 initial-scale=1.0, user-scalable=yes">
? ? ? ? <meta name="keywords" content="count down">
? ? ? ? <meta name="description" content="count down">
? ? ? ? <title>倒計時(Count Down)</title>
? ? </head>
? ? <body>
? ? ? ? <script>
? ? ? ? ? ? var halfPI = Math.PI / 2;
? ? ? ? ? ? var doublePI = Math.PI * 2;
? ? ? ? ? ? var ctx;

? ? ? ? ? ? //畫布大小
? ? ? ? ? ? var canvasSize = 200;
? ? ? ? ? ? var halfCanvasSize = canvasSize / 2;
? ? ? ? ? ? //畫布的外切圓半徑
? ? ? ? ? ? var excircleRadius = Math.SQRT2 * halfCanvasSize;
? ? ? ? ? ? //線條寬度
? ? ? ? ? ? var lineWidth = 2;
? ? ? ? ? ? //蒙版顏色
? ? ? ? ? ? var maskColor = "rgba(90,90,90,0.4)";
? ? ? ? ? ? //單個數(shù)字的字體
? ? ? ? ? ? var singleNumFont = halfCanvasSize * 1.6 + "px Calibri";
? ? ? ? ? ? //兩個數(shù)字的字體
? ? ? ? ? ? var doubleNumFont = halfCanvasSize * 1.2 + "px Calibri";
? ? ? ? ? ? //每秒刷新的幀數(shù)
? ? ? ? ? ? var stepCount = 30;
? ? ? ? ? ? //定時器執(zhí)行間隔時間
? ? ? ? ? ? var interval = 1000 / stepCount;
? ? ? ? ? ? //每幀前進的弧度
? ? ? ? ? ? var radianStep = doublePI / stepCount;
? ? ? ? ? ? //定時器id
? ? ? ? ? ? var intervalId = 0;
? ? ? ? ? ? //倒計時
? ? ? ? ? ? var countdownTime = 0;
? ? ? ? ? ? //當前角度
? ? ? ? ? ? var radian = 0;

? ? ? ? ? ? function init() {
? ? ? ? ? ? ? ? var canvas = document.createElement("canvas");
? ? ? ? ? ? ? ? canvas.innerHTML = "Your browser can not support canvas";
? ? ? ? ? ? ? ? canvas.width = canvasSize;
? ? ? ? ? ? ? ? canvas.height = canvasSize;
? ? ? ? ? ? ? ? canvas.style.backgroundColor = "darkkhaki";
? ? ? ? ? ? ? ? canvas.style.display = "block";

? ? ? ? ? ? ? ? var restartBtn = document.createElement("button");
? ? ? ? ? ? ? ? restartBtn.innerHTML = "restart";
? ? ? ? ? ? ? ? //注意:canvas的width不能寫單位, 而按鈕的width必須寫單位, 否則無效
? ? ? ? ? ? ? ? restartBtn.style.width = "200px";
? ? ? ? ? ? ? ? restartBtn.addEventListener("click", function() {
? ? ? ? ? ? ? ? ? ? restart();
? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? document.body.appendChild(canvas);
? ? ? ? ? ? ? ? document.body.appendChild(restartBtn);

? ? ? ? ? ? ? ? ctx = canvas.getContext("2d");
? ? ? ? ? ? ? ? ctx.lineWidth = lineWidth;
? ? ? ? ? ? ? ? ctx.textAlign = "center";
? ? ? ? ? ? ? ? ctx.textBaseline = "middle";
? ? ? ? ? ? ? ? restart();
? ? ? ? ? ? }

? ? ? ? ? ? function strokeLine(x1, y1, x2, y2) {
? ? ? ? ? ? ? ? ctx.beginPath();
? ? ? ? ? ? ? ? ctx.moveTo(x1, y1);
? ? ? ? ? ? ? ? ctx.lineTo(x2, y2);
? ? ? ? ? ? ? ? ctx.stroke();
? ? ? ? ? ? }

? ? ? ? ? ? function strokeCircle(cx, cy, r) {
? ? ? ? ? ? ? ? ctx.beginPath();
? ? ? ? ? ? ? ? ctx.arc(cx, cy, r, 0, doublePI);
? ? ? ? ? ? ? ? ctx.stroke();
? ? ? ? ? ? }

? ? ? ? ? ? //渲染背景
? ? ? ? ? ? function renderBg() {
? ? ? ? ? ? ? ? ctx.clearRect(0, 0, canvasSize, canvasSize);
? ? ? ? ? ? ? ? //繪制橫豎線
? ? ? ? ? ? ? ? ctx.strokeStyle = "black";
? ? ? ? ? ? ? ? strokeLine(halfCanvasSize, 0, halfCanvasSize, canvasSize);
? ? ? ? ? ? ? ? strokeLine(0, halfCanvasSize, canvasSize, halfCanvasSize);
? ? ? ? ? ? ? ? //繪制兩個內(nèi)圈
? ? ? ? ? ? ? ? ctx.strokeStyle = "Silver";
? ? ? ? ? ? ? ? strokeCircle(halfCanvasSize, halfCanvasSize, halfCanvasSize * 0.9);
? ? ? ? ? ? ? ? strokeCircle(halfCanvasSize, halfCanvasSize, halfCanvasSize * 0.7);
? ? ? ? ? ? }

? ? ? ? ? ? //渲染蒙版
? ? ? ? ? ? function renderMask(radian) {
? ? ? ? ? ? ? ? //繪制扇形的邊界線
? ? ? ? ? ? ? ? var x = halfCanvasSize + excircleRadius * Math.sin(radian);?
? ? ? ? ? ? ? ? var y = halfCanvasSize - excircleRadius * Math.cos(radian);
? ? ? ? ? ? ? ? ctx.strokeStyle = "black";
? ? ? ? ? ? ? ? strokeLine(halfCanvasSize, halfCanvasSize, x, y);
? ? ? ? ? ? ? ? //繪制扇形
? ? ? ? ? ? ? ? ctx.fillStyle = maskColor;
? ? ? ? ? ? ? ? ctx.beginPath();
? ? ? ? ? ? ? ? ctx.moveTo(halfCanvasSize, halfCanvasSize);
? ? ? ? ? ? ? ? ctx.arc(halfCanvasSize, halfCanvasSize, excircleRadius, -halfPI, -halfPI + radian);
? ? ? ? ? ? ? ? ctx.closePath();
? ? ? ? ? ? ? ? ctx.fill();
? ? ? ? ? ? }

? ? ? ? ? ? //渲染數(shù)字
? ? ? ? ? ? function renderNum(num) {
? ? ? ? ? ? ? ? ctx.fillStyle = "black";
? ? ? ? ? ? ? ? ctx.font = num < 10 ? singleNumFont : doubleNumFont;
? ? ? ? ? ? ? ? ctx.fillText(num, halfCanvasSize, halfCanvasSize);
? ? ? ? ? ? }

? ? ? ? ? ? //渲染
? ? ? ? ? ? function render() {
? ? ? ? ? ? ? ? renderBg();
? ? ? ? ? ? ? ? renderMask(radian);
? ? ? ? ? ? ? ? renderNum(countdownTime);
? ? ? ? ? ? }

? ? ? ? ? ? //更新
? ? ? ? ? ? function update() {
? ? ? ? ? ? ? ? radian += radianStep;
? ? ? ? ? ? ? ? if(radian >= (doublePI + radianStep)) {
? ? ? ? ? ? ? ? ? ? radian = 0;
? ? ? ? ? ? ? ? ? ? countdownTime--;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(countdownTime < 0) {
? ? ? ? ? ? ? ? ? ? stop();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

? ? ? ? ? ? //循環(huán)
? ? ? ? ? ? function loop() {
? ? ? ? ? ? ? ? render();
? ? ? ? ? ? ? ? update();
? ? ? ? ? ? }

? ? ? ? ? ? //停止
? ? ? ? ? ? function stop() {
? ? ? ? ? ? ? ? if(intervalId === 0) {
? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? clearInterval(intervalId);
? ? ? ? ? ? ? ? intervalId = 0;

? ? ? ? ? ? }

? ? ? ? ? ? //開始倒計時
? ? ? ? ? ? function restart() {
? ? ? ? ? ? ? ? stop();
? ? ? ? ? ? ? ? countdownTime = 10;
? ? ? ? ? ? ? ? radian = 0;
? ? ? ? ? ? ? ? intervalId = setInterval(loop, interval);
? ? ? ? ? ? }

? ? ? ? ? ? init();
? ? ? ? </script>
? ? </body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript模擬實現(xiàn)計算器

    javascript模擬實現(xiàn)計算器

    這篇文章主要為大家詳細介紹了javascript模擬實現(xiàn)計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • (跨瀏覽器基礎(chǔ)事件/瀏覽器檢測/判斷瀏覽器)經(jīng)驗代碼分享

    (跨瀏覽器基礎(chǔ)事件/瀏覽器檢測/判斷瀏覽器)經(jīng)驗代碼分享

    一些js代碼,自己備用的,高手不要笑話我。(跨瀏覽器基礎(chǔ)事件,瀏覽器檢測,判斷瀏覽器的名稱、版本號、操作系統(tǒng))等等,很實用的,方便自己使用,感興趣的朋友可以了解下,希望本文對你有所幫助
    2013-01-01
  • JavaScript如何把兩個數(shù)組對象合并過程解析

    JavaScript如何把兩個數(shù)組對象合并過程解析

    這篇文章主要介紹了JavaScript如何把兩個數(shù)組對象合并過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 多個js毫秒倒計時同時進行效果

    多個js毫秒倒計時同時進行效果

    這篇文章主要以實例的方式講解多個js毫秒倒計時同時進行效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript–Apple設(shè)備檢測示例代碼

    JavaScript–Apple設(shè)備檢測示例代碼

    JavaScript–Apple設(shè)備檢測示例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 深度剖析JavaScript作用域從局部到全局一網(wǎng)打盡

    深度剖析JavaScript作用域從局部到全局一網(wǎng)打盡

    這篇文章主要為大家介紹了JavaScript作用域的深度剖析,從局部到全局一網(wǎng)打盡,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • javascript創(chuàng)建元素和刪除元素實例小結(jié)

    javascript創(chuàng)建元素和刪除元素實例小結(jié)

    這篇文章主要介紹了javascript創(chuàng)建元素和刪除元素,結(jié)合實例形式總結(jié)分析了javascript針對頁面元素的動態(tài)創(chuàng)建、刪除及子元素操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • 當$.get返回失敗后調(diào)用fail方法示例詳解

    當$.get返回失敗后調(diào)用fail方法示例詳解

    這篇文章主要介紹了當$.get返回失敗后,調(diào)用fail方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • js簡單實現(xiàn)自動生成表格功能示例

    js簡單實現(xiàn)自動生成表格功能示例

    這篇文章主要介紹了js簡單實現(xiàn)自動生成表格功能,結(jié)合實例形式分析了JavaScript針對數(shù)組元素遍歷與頁面元素動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2020-06-06
  • JavaScript使用百度ECharts插件繪制餅圖操作示例

    JavaScript使用百度ECharts插件繪制餅圖操作示例

    這篇文章主要介紹了JavaScript使用百度ECharts插件繪制餅圖操作,結(jié)合實例形式分析了JavaScript使用百度ECharts插件繪制餅圖的原理、步驟及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-11-11

最新評論

临西县| 大名县| 册亨县| 共和县| 城口县| 唐山市| 商城县| 广南县| 杭州市| 阿城市| 威海市| 全州县| 房山区| 福鼎市| 开阳县| 阳新县| 小金县| 宝兴县| 延安市| 中西区| 阿巴嘎旗| 宜都市| 湛江市| 会泽县| 类乌齐县| 罗城| 房山区| 广州市| 伊川县| 信阳市| 行唐县| 开平市| 奇台县| 彭泽县| 海林市| 大埔县| 宣武区| 巧家县| 松滋市| 麟游县| 承德市|