javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JS空白页上展示时钟

使用JS实现在空白页上展示出一个有趣的时钟

作者:英缺思听

在我们日常的网页浏览中,空白的页面往往会被视为一种无趣的事物,一片等待填充的空间,今天我们来学习一下如何使用JS在空白的网页上展示出一个有趣的时钟吧,感兴趣的小伙伴跟着小编一起来看看吧

前言

在我们日常的网页浏览中,空白的页面往往会被视为一种无趣的事物,一片等待填充的空间。但是,有时候,一些简单的元素却能够在这片空白中点燃无限的想象,甚至让时间停止在那一刻。今天我们来学习一下如何使用JS在空白的网页上展示出一个有趣的时钟吧。

正文

    <div class="clock">
    <div class="outer-clock-face">
      <div class="marking marking-one"></div>
      <div class="marking marking-two"></div>
      <div class="marking marking-three"></div>
      <div class="marking marking-four"></div>

      <div class="inner-clock-face">
        <div class="hand hour-hand"></div>
        <div class="hand min-hand"></div>
        <div class="hand second-hand"></div>
      </div>

    </div>
  </div>

<div class="clock">: 这是整个时钟的容器。

<div class="outer-clock-face">: 这是时钟的外圈。

<div class="marking marking-one"></div>: 这是外圈上的一个标记,可能代表小时或分钟的刻度 <div class="marking marking-two"></div> <div class="marking marking-three"></div> <div class="marking marking-four"></div> <div class="inner-clock-face">: 这是时钟的内圈,用于放置时、分、秒的指针。

<div class="hand hour-hand"></div>: 这是时针。

<div class="hand min-hand"></div>: 这是分针。

<div class="hand second-hand"></div>: 这是秒针。

这段HTML代码创建了一个简单的时钟外观的结构,但是它还需要通过CSS来添加样式,以及通过JavaScript来实现时钟的动态效果。

既然还需要添加JS和CSS样式来实现动态效果,那我们先思考一下如何使用怎样的CSS样式呢?

.clock{
    width: 300px;
    height: 300px;
    border-radius: 50%;
    border: 7px solid #ffebdb;
    background-image: url('./bg.jpeg');
    background-size: 111%;
    padding: 20px;

.clock: 这个类设置了时钟的整体样式,包括宽度、高度、边框、圆角、背景图像以及填充。其中我们在 *background-image: url('./bg.jpeg');*中填入了我们指定的背景图片的路径。如果大家想设置自己想要的背景图片,可以填入自己的相对于当前HTML文件的背景图片路径

    .outer-clock-face{
    width: 100%;
    height: 100%;
    border-radius: 100%;
    position: relative;
  }
  .outer-clock-face::before,
  .outer-clock-face::after{
    content: '';
    width: 10px;
    height: 100%;
    background: #596235;
    display: block;
    border-radius: 8px;
    position: absolute;
    left: 50%;
    transform: translate(-50%);
  }
  .outer-clock-face::after{
    transform: rotateZ(90deg);
    transform-origin: center center;
  }

这段代码为时钟的外圈添加了样式:

     .marking{
    width: 3px;
    height: 100%;
    background: #596235;
    position: absolute;
    left: 50%;
    transform: translate(-50%);
    transform-origin: center center;
  }
  .marking-one{
    transform: rotateZ(30deg);
  }
  .marking-two{
    transform: rotateZ(60deg);
  }
  .marking-three{
    transform: rotateZ(120deg);
  }
  .marking-four{
    transform: rotateZ(150deg);
  }

通过这些样式,我们可以在时钟的外圈上添加刻度,以便于用户读取时间

    .inner-clock-face{
    width: 80%;
    height: 80%;
    border-radius: 50%;
    background-color: #ffebdb;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
  }
  .hand{
    width: 50%;
    height: 6px;
    background: red;
    border-radius: 6px;
    position: absolute;
    top: 50%;
    right: 50%;
    transform: translateY(-50%) rotateZ(90deg);
    transform-origin: 100% center;
  }
  .hour-hand{
    width: 30%;
  }
  .min-hand{
    width: 40%;
    height: 3px;
  }
  .second-hand{
    width: 45%;
    height: 2px;
    background: #b3b3b3;
  }

我们在.inner-clock-face部分对内圈的宽度和高度,背景颜色等进行了定义,然后在.hand部分定义了时钟指针的共同样式,包括宽度、高度、背景颜色、边框半径、绝对定位、水平居中和垂直偏移。

这些样式会使时钟内圈和指针在页面上呈现出具有美感和功能性的外观,并且各个部分的样式经过了精心设计以确保它们能够正确地显示时间。

    const secondHand = document.querySelector('.second-hand')
const minHand = document.querySelector('.min-hand')
const hourHand = document.querySelector('.hour-hand')

// console.log(secondHand);

function setTime() {
    const now = new Date()

    // 获取当前的秒数
    const seconds = now.getSeconds() // 30
    const secondsDegrees = seconds * 6 + 90
    secondHand.style.transform = `rotate(${secondsDegrees}deg)`

    // 获取到分数
    const mins = now.getMinutes() // 40
    const minsDegrees = mins * 6 + 90
    minHand.style.transform = `rotate(${minsDegrees}deg)`

    // 获取到时
    const hour = now.getHours() // 21
    const hourDegrees = hour * 30 + 90 + (mins / 60) * 30
    hourHand.style.transform = `rotate(${hourDegrees}deg)`
}

setTime()
setInterval(setTime, 1000)

我们通过 setTime 函数来更新时钟的秒针,并使用 setInterval 函数每秒钟调用一次 setTime 函数来保持时钟的实时更新。

在这篇文章中,我们通过 HTML、CSS 和 JavaScript 创建了一个简单而功能性的网页时钟。通过 HTML,我们定义了时钟的结构,包括外部和内部的时钟面以及时、分、秒指针。然后,通过 CSS,我们为时钟添加了样式,使其外观更加美观,并且实现了指针的动态旋转效果。最后,通过 JavaScript,我们获取了当前的时间,并根据时间更新了时、分、秒指针的位置,从而实现了实时更新的时钟功能。

总的来说,这个网页时钟展示了 HTML、CSS 和 JavaScript 的强大之处,通过它们的结合,我们可以创造出各种各样的交互式和动态的网页元素。无论是学习前端开发还是简单地了解网页技术,这个项目都是一个很好的起点。

以上就是使用JS实现在空白页上展示出一个有趣的时钟的详细内容,更多关于JS空白页上展示时钟的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文