js实现带翻转动画图片时钟

2023-12-10前端开发
9

JavaScript实现带翻转动画图片时钟的攻略:

首先,需要准备以下文件及库:
- 时钟的背景图像和指针图像
- jQuery库
- jQuery Countdown插件库

接下来,按以下步骤实现:

1. 在HTML代码中创建时钟的div标签和必要的CSS样式:

<div class="clock">
  <div class="clock-bg"></div>
  <div class="hour-hand"></div>
  <div class="minute-hand"></div>
  <div class="second-hand"></div>
</div>
.clock {
  position: relative;
  width: 200px;
  height: 200px;
}

.clock-bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-image: url(clock-bg.png);
  background-size: 100% 100%;
}

.hour-hand, .minute-hand, .second-hand {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 6px;
  height: 60px;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  transform-origin: bottom center;
}

.hour-hand {
  margin-left: -3px;
  background-image: url(hour-hand.png);
}

.minute-hand {
  margin-left: -3px;
  background-image: url(minute-hand.png);
}

.second-hand {
  margin-left: -3px;
  background-image: url(second-hand.png);
}

2. 在JS代码中使用jQuery Countdown插件来处理倒计时事件:

$('#countdown').countdown('2022/01/01', function(event) {
  var $clock = $('.clock');
  $clock.find('.hour-hand').css('transform', 'rotate(' + event.offset.hours * 15 + 'deg)');
  $clock.find('.minute-hand').css('transform', 'rotate(' + event.offset.minutes * 6 + 'deg)');
  $clock.find('.second-hand').css('transform', 'rotate(' + event.offset.seconds * 6 + 'deg)');
}).on('finish.countdown', function(event) {
  alert('Happy New Year!');
});

以上代码中,#countdown是倒计时计时器的标识符,2022/01/01是目标时间点,event.offset.hoursevent.offset.minutesevent.offset.seconds分别是计算出的小时数、分钟数、秒数。通过计算出的时间数旋转时钟的不同指针,并在倒计时结束时弹出提示框。

3. 使用CSS3动画来实现指针的翻转效果:

.hour-hand, .minute-hand, .second-hand {
  transition: transform 0.5s cubic-bezier(0.42, 0, 0.31, 1.36);
}

.hour-hand.active, .minute-hand.active, .second-hand.active {
  animation: flip-animation 1s ease-in-out 1;
}

@keyframes flip-animation {
  0% {
    transform: rotateY(0deg);
  }

  50% {
    transform: rotateY(90deg);
  }

  100% {
    transform: rotateY(0deg);
  }
}

以上代码中使用transition属性和animation属性来实现指针的动态转换。在指针加上active类名之后,指针将使用CSS3动画来翻转。

示例1:
js实现带翻转动画图片时钟

示例2:
js实现带翻转动画图片时钟

The End

相关推荐

layui实现图片上传成功后回显点击放大图片功能
layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-...
2025-09-06 前端开发
202

Layui实现数据表格中鼠标悬停图片放大离开时恢复原图
Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150...
2025-09-04 前端开发
112

layui点击文本输入框调起弹出选择框并选择内容的两种方法参考
我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen...
2025-09-02 前端开发
167

网站部署https后百度地图不显示问题
https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1...
2025-07-28 前端开发
139

微信小程序实现点击复制功能和手机拨打电话功能
做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"...
2025-07-02 前端开发
78

js拖拽排序插件Sortable.js如何使用
由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持...
2025-06-12 前端开发
161