由旋转刻度盘组成的JS动画时钟

由旋转刻度盘组成的JS动画时钟

添加时间:2021-03-21 04:46:46
站长推荐丨赞助论坛,可获取海量资源终身免费下载权限奥!
举报 举报
收藏
预览
附件 附件
  • 模板类型模板类型:计时器
  • 模板颜色模板颜色:初级
  • 下载积分下载积分:28 米粒
  • 下载权限下载权限:

    赞助会员

一款由旋转刻度盘组成的JS动画时钟特效,整体的风格类似一个旋转的罗盘,把时分秒分成6个段分别放在不同的圆环内,通过最外围的秒数字旋转来改变事件,整体效果非常的大气和新颖,喜欢的童鞋请收下吧。
由旋转刻度盘组成的JS动画时钟
分类:日期时间 > 计时器 难易:初级

页面的head部分,仅需引入一个CSS样式文件即可,代码如下:

<link type="text/css" rel="stylesheet" href="css/style.css">

页面的body部分,时分秒的6个分段包括了0到9的不同数字,分别放入不同的div容器里即可,代码如下:

<div class="container">
  <!-- Hours -->
  <div class="spinner" id="spinner_h1">
    <div class="num num_0" id="num_0_h1">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_h1">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_h1">
      <div>2</div>
    </div>
  </div>

  <div class="spinner" id="spinner_h2">
    <div class="num num_0" id="num_0_h2">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_h2">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_h2">
      <div>2</div>
    </div>
    <div class="num num_3" id="num_3_h2">
      <div>3</div>
    </div>
    <div class="num num_4" id="num_4_h2">
      <div>4</div>
    </div>
    <div class="num num_5" id="num_5_h2">
      <div>5</div>
    </div>
    <div class="num num_6" id="num_6_h2">
      <div>6</div>
    </div>
    <div class="num num_7" id="num_7_h2">
      <div>7</div>
    </div>
    <div class="num num_8" id="num_8_h2">
      <div>8</div>
    </div>
    <div class="num num_9" id="num_9_h2">
      <div>9</div>
    </div>
  </div>

  <!-- Minutes -->

  <div class="spinner" id="spinner_m1">
    <div class="num num_0" id="num_0_m1">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_m1">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_m1">
      <div>2</div>
    </div>
    <div class="num num_3" id="num_3_m1">
      <div>3</div>
    </div>
    <div class="num num_4" id="num_4_m1">
      <div>4</div>
    </div>
    <div class="num num_5" id="num_5_m1">
      <div>5</div>
    </div>
  </div>

  <div class="spinner" id="spinner_m2">
    <div class="num num_0" id="num_0_m2">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_m2">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_m2">
      <div>2</div>
    </div>
    <div class="num num_3" id="num_3_m2">
      <div>3</div>
    </div>
    <div class="num num_4" id="num_4_m2">
      <div>4</div>
    </div>
    <div class="num num_5" id="num_5_m2">
      <div>5</div>
    </div>
    <div class="num num_6" id="num_6_m2">
      <div>6</div>
    </div>
    <div class="num num_7" id="num_7_m2">
      <div>7</div>
    </div>
    <div class="num num_8" id="num_8_m2">
      <div>8</div>
    </div>
    <div class="num num_9" id="num_9_m2">
      <div>9</div>
    </div>
  </div>

  <!-- Seconds -->

  <div class="spinner" id="spinner_s1">
    <div class="num num_0" id="num_0_s1">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_s1">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_s1">
      <div>2</div>
    </div>
    <div class="num num_3" id="num_3_s1">
      <div>3</div>
    </div>
    <div class="num num_4" id="num_4_s1">
      <div>4</div>
    </div>
    <div class="num num_5" id="num_5_s1">
      <div>5</div>
    </div>
  </div>

  <div class="spinner" id="spinner_s2">
    <div class="num num_0" id="num_0_s2">
      <div>0</div>
    </div>
    <div class="num num_1" id="num_1_s2">
      <div>1</div>
    </div>
    <div class="num num_2" id="num_2_s2">
      <div>2</div>
    </div>
    <div class="num num_3" id="num_3_s2">
      <div>3</div>
    </div>
    <div class="num num_4" id="num_4_s2">
      <div>4</div>
    </div>
    <div class="num num_5" id="num_5_s2">
      <div>5</div>
    </div>
    <div class="num num_6" id="num_6_s2">
      <div>6</div>
    </div>
    <div class="num num_7" id="num_7_s2">
      <div>7</div>
    </div>
    <div class="num num_8" id="num_8_s2">
      <div>8</div>
    </div>
    <div class="num num_9" id="num_9_s2">
      <div>9</div>
    </div>
  </div>
  <div class="top">&gt;</div>
</div>

页面的底部,纯javascript来响应数字的旋转、样式变化等各种事件,代码如下:

<script type="text/javascript">
//These functions help add, remove or toggle css classes
function tog_class(id, cl) {
  var elem = document.getElementById(id);
  if (elem == null) {
    return 0;
  }
  if (elem.classList.contains(cl) === true) {
    elem.classList.remove(cl);
  } else {
    elem.classList.add(cl);
  }
}

function add_class(id, cl) {
  var elem = document.getElementById(id);
  if (elem == null) {
    return 0;
  }
  if (elem.classList.contains(cl) !== true) {
    elem.classList.add(cl);
  }
}

function rem_class(id, cl) {
  var elem = document.getElementById(id);
  if (elem == null) {
    return 0;
  }
  if (elem.classList.contains(cl) === true) {
    elem.classList.remove(cl);
  }
}
//This function gets the date and does operations using H/M/S
function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();

  var h1 = (h - h % 10) / 10;
  var h2 = h % 10;

  var m1 = (m - m % 10) / 10;
  var m2 = m % 10;

  var s1 = (s - s % 10) / 10;
  var s2 = s % 10;

  set_spin_class("s1", s1);
  set_spin_class("s2", s2);

  set_spin_class("m1", m1);
  set_spin_class("m2", m2);

  set_spin_class("h1", h1);
  set_spin_class("h2", h2);

  var t = setTimeout(startTime, 500);
}
//This function calls the appropriate class changes
// It receives the type of spinner to change (m1 for example) and changes classes based on the current time
function set_spin_class(target, val) {
  for (i = 0; i < 10; i++) {
    if (i != val) {
      rem_class("spinner_" + target, "spinner_" + target + "_" + i);
      rem_class("num_" + i + "_" + target, "lit");
    }
  }
  add_class("spinner_" + target, "spinner_" + target + "_" + val);
  add_class("num_" + val + "_" + target, "lit");

  if (val === 0) {
    deswitcher(target, val);
  } /*These functions prevent the clock from changing direction*/
  setTimeout(function() {
    switcher(target, val);
  }, 500);
}

function switcher(target, val) {
  switch ("spinner_" + target + "_" + val) {
    case "spinner_h1_2":
      rem_class("spinner_h1", "spinner_h1_2");
      add_class("spinner_h1", "spinner_h1_switch");
      break;
    case "spinner_h2_9":
      rem_class("spinner_h2", "spinner_h1_2");
      add_class("spinner_h2", "spinner_h2_switch");
      break;

    case "spinner_m1_5":
      rem_class("spinner_m1", "spinner_m1_5");
      add_class("spinner_m1", "spinner_m1_switch");
      break;
    case "spinner_m2_9":
      rem_class("spinner_m2", "spinner_m2_9");
      add_class("spinner_m2", "spinner_m2_switch");
      break;

    case "spinner_s1_5":
      rem_class("spinner_s1", "spinner_s1_5");
      add_class("spinner_s1", "spinner_s1_switch");
      break;
    case "spinner_s2_9":
      rem_class("spinner_s2", "spinner_s2_9");
      add_class("spinner_s2", "spinner_s2_switch");
      break;
  }
}
function deswitcher(target, val) {
  rem_class("spinner_" + target, "spinner_" + target + "_switch");
}
//Do stuff here
window.onload = function() {
  startTime();
};
</script>
相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:由旋转刻度盘组成的JS动画时钟

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.166523s