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

接下来我将为您详细讲解如何使用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日

相关文章

  • JavaScript学习教程之cookie与webstorage

    JavaScript学习教程之cookie与webstorage 在前端开发中,我们常常需要在网站中存储一些信息,以便下次用户访问时直接使用,这就需要用到cookie和webstorage。本文将详细讲解cookie和webstorage的概念、用法、区别以及示例。 1. Cookie 什么是Cookie? Cookie是一种小型的文本文件,它可以在客户端存…

    JavaScript 2023年6月11日
    00
  • 关于JavaScript回调函数的深入理解

    关于JavaScript回调函数的深入理解 什么是回调函数 回调函数是一种在JavaScript中常见的编程模式。它是一个函数,可以作为参数传递给其他函数,以便在其他函数完成之后执行。虽然它非常实用,但许多初学者仍然对回调函数感到困惑。 当我们在使用 JavaScript 编写异步代码时,比如在进行 Ajax 请求时,我们不能直接通过在代码中写入“等待服务器…

    JavaScript 2023年6月10日
    00
  • JavaScript 定时器关键点及使用场景解析

    JavaScript 定时器关键点及使用场景解析 什么是 JavaScript 定时器? JavaScript 定时器是一种用于在指定时间间隔后执行一段 JavaScript 代码的机制。在开发中,我们通常需要在特定的时间间隔内执行某些操作,这时就可以使用 JavaScript 定时器。 JavaScript 提供了两种定时器: setInterval se…

    JavaScript 2023年6月11日
    00
  • html5 canvas js(数字时钟)实例代码

    下面是“HTML5 Canvas JS(数字时钟)实例代码”的完整攻略。 前置知识 在学习 HTML5 Canvas JS 时,需要具备 HTML 和 JavaScript 的基础知识。 步骤 步骤1:创建 HTML 文件 首先,创建一个 HTML 文件,并添加一个 canvas 标签以显示数字时钟。代码如下: <!DOCTYPE html> &…

    JavaScript 2023年5月27日
    00
  • JavaScript中获取未知对象属性的代码

    获取未知对象属性是 JavaScript 中常见的需求之一,通常可以通过以下两种方式来实现: 1. 使用“[]”操作符 JavaScript 中可以通过“[]”操作符来获取对象属性。它的语法为: object[property] 其中,object 是要获取属性的对象,property 是属性名称(可以是变量或字符串)。 如果对象存在该属性,则返回该属性的值…

    JavaScript 2023年6月10日
    00
  • JS中使用正则表达式g模式和非g模式的区别

    使用正则表达式(RegEx)是JavaScript中的一个重要功能,它可以让我们在字符串中搜索并匹配特定的模式。JS中的正则表达式还有两种匹配模式:g模式和非g模式。在本文中,我们将详细讲解这两种模式的区别。 什么是正则表达式g模式和非g模式? 在JS中,我们通过在正则表达式文本后添加一个标志来指定其模式。g模式和非g模式具有以下区别: g模式 g模式代表全…

    JavaScript 2023年6月10日
    00
  • Javascript中产生固定结果的函数优化技巧

    当我们在编写JavaScript中的函数时,我们有时候需要函数能够返回对于特定输入的相同结果。这种类型的函数被称为Pure Function。Pure Function的一个重要特性是对于相同的输入,产生相同的输出。这使得测试和调试变得更加容易,并且减少不必要的副作用。 在本篇攻略中,我们将讨论如何优化JavaScript中的Pure Function,使其…

    JavaScript 2023年5月27日
    00
  • jQuery form 表单验证插件(fieldValue)校验表单

    jQuery form 表单验证插件(fieldValue)是一款常用的前端表单验证插件,它可以通过简单的配置,快速实现对表单的校验功能。下面将详细讲解如何使用该插件进行表单验证。 安装 安装该插件最简单的方式是通过CDN引入,可以在html文件中添加以下代码: <script src="https://cdn.staticfile.org/…

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