javascript实现一款好看的秒表计时器

yizhihongxing

接下来我将为您详细讲解如何使用JavaScript实现一款好看的秒表计时器。实现这个计时器总体步骤如下:

  1. 确定计时器的基本功能。
  2. 创建基本的HTML结构。
  3. 编写JavaScript代码实现计时器逻辑。
  4. 优化样式,增强用户体验。

下面我将逐步解释实现的步骤。

1. 确定计时器的基本功能

在我们开始写代码之前,需要确定计时器的基本功能。我们的计时器主要有三个功能:

  1. 点击开始按钮后,计时器开始计时,并在UI上显示计时结果。
  2. 点击暂停按钮后,计时器暂停计时。
  3. 点击重置按钮,计时器清零。

2. 创建基本的HTML结构

根据计时器的基本功能,我们可以先创建一个基本的HTML结构,如下:

<div class="timer">
  <div class="display">00:00:00</div>
  <button class="start">开始</button>
  <button class="stop">暂停</button>
  <button class="reset">重置</button>
</div>

其中,类名为displaydiv用于显示计时结果;类名为startstopresetbutton用于开始、暂停和重置计时器。

3. 编写JavaScript代码实现计时器逻辑

接下来,我们就可以开始编写JavaScript代码,实现计时器逻辑。具体步骤如下:

1. 获取DOM元素

首先,我们需要获取HTML元素,这里我们使用document.getElementById()方法获取需要用到的HTML元素。代码如下:

const display = document.getElementById('display');
const startBtn = document.getElementById('start');
const stopBtn = document.getElementById('stop');
const resetBtn = document.getElementById('reset');

2. 定义计时器变量

定义一个timer变量,用于保存计时器状态和计时时间。我们需要通过判断timer变量的状态,来执行不同的操作。

let timer = null; // 计时器变量
let currentSeconds = 0; // 当前已经计时的秒数,初始值为0

3. 定义计时器函数

计时器函数用于计算计时结果,并将结果显示在UI上。

function timerHandler() {
  currentSeconds++; // 记录当前已经计时的秒数
  const hours = Math.floor(currentSeconds / 3600); // 计算小时数
  const minutes = Math.floor(currentSeconds % 3600 / 60); // 计算分钟数
  const seconds = Math.floor(currentSeconds % 60); // 计算秒数

  // 格式化计时结果,使用padStart()方法补足前导零
  const timeString = [hours, minutes, seconds].map(num => String(num).padStart(2, '0')).join(':');
  display.innerText = timeString; // 将计时结果显示在UI上
}

4. 监听按钮事件

监听HTML元素的‘click’事件,处理开始、暂停和重置计时器的操作。

startBtn.addEventListener('click', function() {
  if (timer === null) {
    // 计时器还未开始状态,开始计时操作
    timer = setInterval(timerHandler, 1000);
  }
});

stopBtn.addEventListener('click', function() {
  if (timer !== null) {
    // 计时器处于计时状态,暂停计时操作
    clearInterval(timer);
    timer = null;
  }
});

resetBtn.addEventListener('click', function() {
  // 重置计时器操作
  clearInterval(timer);
  timer = null;
  currentSeconds = 0;
  display.innerText = '00:00:00'; // 显示UI上的计时结果
});

4. 优化样式,增强用户体验

最后一步,是对计时器的样式进行关注。我们可以通过CSS样式来美化计时器,增强用户体验,具体操作请见代码示例。

下面是两个例子来说明这样的计时器的实现:

第一种是:计时器显示在导航栏中,这个计时器的代码位于一个index.js文件中,我们从页面中导入这个js文件,实现了导航栏上的计时器。

<!-- head部分 -->
<script type="text/javascript" src="index.js"></script>

<!-- body部分 -->
<nav>
  <a href='#'>Home</a>
  <a href='#'>Articles</a>
  <a href='#'>Contact</a>
  <div class="timer">
    <div id="display">00:00:00</div>
    <button id="start">开始</button>
    <button id="stop">暂停</button>
    <button id="reset">重置</button>
  </div>
</nav>

代码中的CSS样式:

nav {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #WhiteSmoke;
  color: #000;
  height: 60px;
  padding: 0 100px;
  font-size: 1.5rem;
}

.timer {
  display: flex;
  justify-content: center;
  align-items: center;
}

#display {
  margin-right: 10px;
  font-size: 1.2rem;
  font-weight: bold;
  text-align: center;
  min-width: 100px;
  border-radius: 3px;
  background-color: #FFF;
  color: #333;
  padding: 5px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
}

button {
  background-color: #007bff;
  color: #FFF;
  border: none;
  border-radius: 3px;
  padding: 5px 10px;
  font-size: .9rem;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
  transition: all .2s;
  margin-right: 5px;
}

button:hover {
  box-shadow: 0 2px 5px rgba(0, 0, 0, .2);
  transform: translateY(-1px);
}

第二种是:计时器放在一个位于白色的框内,与网站的颜色相协调。

<!-- HTML结构部分 -->
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div class="col-md-6 mx-auto">
        <div class="timer">
          <div id="display">00:00:00</div>
          <button id="start">开始</button>
          <button id="stop">暂停</button>
          <button id="reset">重置</button>
        </div>
      </div>
    </div>
  </div>
</div>

代码中的CSS样式:

.container {
  background-color: #F0F0F8;
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.timer {
  display: flex;
  justify-content: center;
  align-items: center;
}

#display {
  margin-right: 10px;
  font-size: 1.2rem;
  font-weight: bold;
  text-align: center;
  min-width: 100px;
  border-radius: 3px;
  background-color: #FFF;
  color: #333;
  padding: 5px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
}

button {
  background-color: #4CAF50;
  color: #FFF;
  border: none;
  border-radius: 3px;
  padding: 5px 10px;
  font-size: .9rem;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
  transition: all .2s;
  margin-right: 5px;
}

button:hover {
  box-shadow: 0 2px 5px rgba(0, 0, 0, .2);
  transform: translateY(-1px);
}

以上是使用JavaScript实现一款好看的秒表计时器的完整攻略。希望这对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现一款好看的秒表计时器 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Echarts自定义图形的方法参考

    下面是详细讲解Echarts自定义图形的方法参考的完整攻略。 1. 理解自定义图形的概念 在Echarts中,除了常见的图形类型(如折线图、柱状图、散点图等)以外,还支持自定义图形类型。自定义图形指的是使用自定义的图形形状绘制出的图表元素,例如可以用自定义的图形绘制出家具、车辆等实际物品,也可以用自定义的图形实现图表中的特效效果(如动画效果、光影效果等)。 …

    JavaScript 2023年6月11日
    00
  • JS前端基于canvas给图片添加水印

    在前端开发中,给图片添加水印是一项常见的需求。利用canvas可以比较方便地实现给图片添加水印的功能。下面是实现这一需求的完整攻略: 1. 准备工作 在开始使用canvas给图片添加水印之前,我们需要准备一张需要添加水印的图片和一个水印图片,这个水印图片可以是公司logo、网站名称等等。另外,需要一个canvas标签,这里以<canvas id=”ca…

    JavaScript 2023年5月19日
    00
  • JSON辅助格式化处理方法

    JSON格式是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而格式杂乱、不易阅读的JSON数据对于开发和调试过程中处理和理解都会造成困难。因此,JSON辅助格式化处理方法就变得非常重要,本文将会详细讲解该方法的攻略。 什么是JSON格式化? JSON格式化是指通过对不可读的JSON数据按照一定的规则进行排版和缩进,使其更易于阅读和理解的过程。常规的J…

    JavaScript 2023年5月27日
    00
  • 分享几个JavaScript运算符的使用技巧

    让我来详细讲解一下“分享几个JavaScript运算符的使用技巧”的攻略。 标题 分享几个JavaScript运算符的使用技巧 代码块 在 JavaScript 中,有很多运算符可以帮助我们进行数据处理和逻辑运算。下面我就来分享几个常用的运算符,并介绍一些使用技巧。 一、 空值合并运算符 空值合并运算符 ?? 用于确定变量或表达式是否为未定义或空值(null…

    JavaScript 2023年5月27日
    00
  • JavaScript正则表达式校验与递归函数实际应用实例解析

    下面是详细讲解JavaScript正则表达式校验与递归函数实际应用实例解析的完整攻略。 一、正则表达式校验 1.1 什么是正则表达式 正则表达式是一种用特定语法编写的用来匹配、搜索和替换字符串的工具。在JavaScript中,可以使用正则表达式来校验和处理字符串。 1.2 常用的正则表达式语法 下面是一些常用的正则表达式语法: ^ 匹配字符串的开始位置 $ …

    JavaScript 2023年5月28日
    00
  • js实现购物车功能

    JS实现购物车功能的攻略分为以下步骤: 1. 创建基础页面结构 首先需要创建一个基础页面结构,用来展示商品列表、购物车和结算按钮等元素。可以通过HTML和CSS实现页面的布局和样式。在页面上创建一个购物车DOM元素,以便后续通过JavaScript动态地向购物车添加商品。 2. 加载商品数据 可以通过AJAX或其他请求方式,从服务器获取商品数据并渲染到页面上…

    JavaScript 2023年6月11日
    00
  • js实现炫酷的烟花效果

    下面是js实现炫酷的烟花效果的完整攻略。 1. 前置条件 在实现炫酷的烟花效果之前,需要对以下技术有一定的掌握: HTML5 Canvas: 用于绘制图形,实现动态效果的关键。 JavaScript: 用于编写控制动画效果的脚本。 CSS3: 用于设置页面布局、动画过渡效果等。 2. 基本思路 实现炫酷的烟花效果,需要基于以下两个基本思路: 生成随机颜色的烟…

    JavaScript 2023年6月10日
    00
  • 深入理解JavaScript事件机制

    深入理解JavaScript事件机制 JavaScript的事件机制为我们在网页中开发交互体验提供了强大的支持。要深入理解JavaScript事件机制包括以下三个方面: 事件类型 事件模型 事件处理函数 事件类型 JavaScript中定义了很多事件类型,例如鼠标相关的事件类型包括: click 鼠标单击事件 dblclick 鼠标双击事件 mousedow…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部