HTML5时钟

<!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>HTML5仿Apple Watch时钟动画DEMO演示</title>
  <link rel="stylesheet" href="files/style.css" media="screen" type="text/css" />
  </head>
   
  <body>
  <!--
  Recreating Apple Watch‘s Utility face <http://www.apple.com/watch/design/> in HTML+CSS+JS
  -->
   
  <div class="fill">
  <div class="reference"></div>
  <div class="clock" id="utility-clock">
  <div class="centre">
  <div class="dynamic"></div>
  <div class="expand round circle-1"></div>
  <div class="anchor hour">
  <div class="element thin-hand"></div>
  <div class="element fat-hand"></div>
  </div>
  <div class="anchor minute">
  <div class="element thin-hand"></div>
  <div class="element fat-hand minute-hand"></div>
  </div>
  <div class="anchor second">
  <div class="element second-hand"></div>
  </div>
  <div class="expand round circle-2"></div>
  <div class="expand round circle-3"></div>
  </div>
  </div>
  </div>
   
  <script src="files/index.js"></script>
   
  </body>
  </html>

css

body {
    background: black;
}

.clock {
    position: absolute;
    opacity: 1;
}

.fill .clock {
    left: 50%;
    top: 50%;
}

.centre {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
}

.expand {
    position: absolute;
    top: 0;
    left: 0;
    transform: translate(-50%, -50%);
}

.anchor {
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 0;
}

.element {
    position: absolute;
    top: 0;
    left: 0;
}

.round {
    border-radius: 296px;
}

.circle-1 {
    background: white;
    width: 12px;
    height: 12px;
}

.circle-2 {
    background: #FA9F22;
    width: 8px;
    height: 8px;
}

.circle-3 {
    background: black;
    width: 4px;
    height: 4px;
}

.second {
    transform: rotate(180deg);
}

.minute {
    transform: rotate(54deg);
}

.second-hand {
    width: 2px;
    height: 164px;
    background: #FA9F22;
    transform: translate(-50%,-100%) translateY(24px);
}

.hour {
    transform: rotate(304.5deg);
}

.thin-hand {
    width: 4px;
    height: 50px;
    background: white;
    transform: translate(-50%,-100%);
}

.fat-hand {
    width: 10px;
    height: 57px;
    border-radius: 10px;
    background: white;
    transform: translate(-50%,-100%) translateY(-18px);
}

.minute-hand {
    height: 112px;
}

.hour-text {
    position: absolute;
    font: 40px Hei, Helvetica, Arial, sans-serif;
    color: white;
    transform: translate(-50%,-50%);
}

.hour-10 {
    padding-left: 0.4ex;
}
.hour-11 {
    padding-left: 0.25ex;
}

.minute-text {
    position: absolute;
    font: 12px Avenir Next, Helvetica, Arial, sans-serif;
    color: white;
    transform: translate(-50%,-50%);
}

.minute-line {
    background: white;
    width: 1px;
    height: 9px;
    transform: translate(-50%,-100%) translateY(-131px);
    opacity: 0.34;
}

js
var clock = document.querySelector(‘#utility-clock‘)
utilityClock(clock)

if (clock.parentNode.classList.contains(‘fill‘)) autoResize(clock, 295 + 32)

function utilityClock(container) {
    var dynamic = container.querySelector(‘.dynamic‘)
    var hourElement = container.querySelector(‘.hour‘)
    var minuteElement = container.querySelector(‘.minute‘)
    var secondElement = container.querySelector(‘.second‘)
    var minute = function(n) {
        return n % 5 == 0 ? minuteText(n) : minuteLine(n)
    }
    var minuteText = function(n) {
        var element = document.createElement(‘div‘)
        element.className = ‘minute-text‘
        element.innerHTML = (n < 10 ? ‘0‘ : ‘‘) + n
        position(element, n / 60, 135)
        dynamic.appendChild(element)
    }
    var minuteLine = function(n) {
        var anchor = document.createElement(‘div‘)
        anchor.className = ‘anchor‘
        var element = document.createElement(‘div‘)
        element.className = ‘element minute-line‘
        rotate(anchor, n)
        anchor.appendChild(element)
        dynamic.appendChild(anchor)
    }
    var hour = function(n) {
        var element = document.createElement(‘div‘)
        element.className = ‘hour-text hour-‘ + n
        element.innerHTML = n
        position(element, n / 12, 105)
        dynamic.appendChild(element)
    }
    var position = function(element, phase, r) {
        var theta = phase * 2 * Math.PI
        element.style.top = (-r * Math.cos(theta)).toFixed(1) + ‘px‘
        element.style.left = (r * Math.sin(theta)).toFixed(1) + ‘px‘
    }
    var rotate = function(element, second) {
        element.style.transform = element.style.webkitTransform = ‘rotate(‘ + (second * 6) + ‘deg)‘
    }
    var animate = function() {
        var now = new Date()
        var time = now.getHours() * 3600 +
                    now.getMinutes() * 60 +
                    now.getSeconds() * 1 +
                    now.getMilliseconds() / 1000
        rotate(secondElement, time)
        rotate(minuteElement, time / 60)
        rotate(hourElement, time / 60 / 12)
        requestAnimationFrame(animate)
    }
    for (var i = 1; i <= 60; i ++) minute(i)
    for (var i = 1; i <= 12; i ++) hour(i)
    animate()
}

function autoResize(element, nativeSize) {
    var update = function() {
        var scale = Math.min(window.innerWidth, window.innerHeight) / nativeSize
        element.style.transform = element.style.webkitTransform = ‘scale(‘ + scale.toFixed(3) + ‘)‘
    }
    update()
    window.addEventListener(‘resize‘, update)
}
时间: 2024-07-30 10:17:21

HTML5时钟的相关文章

用hoverclock插件实现HTML5时钟

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>用hoverclock插件实现HTML5时钟</title> <link rel="stylesheet" hr

14款超时尚的HTML5时钟动画

时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助. 1.可爱的CSS3圆盘时钟动画 今天要分享的也是一款可爱的CSS3圆盘时钟动画,时钟背景是乳白色的,显得非常干净,另外,时钟也可以和你本地的时候保持同步. 在线演示 源码下载 2.HTML5 SVG圆盘时钟动画 5种时钟样式 今天我

14款形态各异的超时尚HTML5时钟动画

14款超时尚的HTML5时钟动画(附源码)   时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助. 1.可爱的CSS3圆盘时钟动画 在线演示:http://www.html5tricks.com/demo/css3-circle-clock/index.html 源码下载:http:

轻松实现HTML5时钟(分享下自己对canvas的理解,原来没你想像的那么难哦)

Hey,guys! 让我们一起用HTML5实现一下简易时钟吧! 接触canvas时, 我突然有一种非常熟悉的感觉------canvas的部分的功能其实和Photoshop中的 钢笔工具 是一样的.所以,如果你对 PS里的 钢笔工具 运用自如的话,恭喜你,canvas你将很快上手~~ 说下对HTML5中canvas的理解,canvas翻译成中文就是画布,顾名思义,canvas当然是用来作画的啦~~ 作画嘛,其实现的思想 与 photoshop 基本上是一样的~~,只不过photoshop可以用可

纯Shading Language绘制HTML5时钟

今天是2014年的最后一天,这个时刻总会让人想起时钟,再过几个小时地球人都要再老了一岁,于是搞个HTML5版的时钟就是我们今天要完成的任务,实现HTML5的时钟绘制一般会采用三种方式,第一种采用CSS的实现方式,例如 http://www.css-tricks.com/examples/CSS3Clock/:第二种采用SVG的实现方式,例如 http://www.css-tricks.com/examples/CSS3Clock/:第三种采用Cavnas的2D绘制方式,如HT for Web中<

纯html5打造的时钟

1 <!DOCTYPE HTML> 2 <html lang="en-US"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script> 7 window.onload = function(){ 8 var oC = document.getElementById('ch1'); 9 var oGC = oC.ge

HTML5仿Apple Watch时钟动画

该款HTML5时钟是仿Apple Watch界面模拟出来的,可以根据本地时间实时更新指针数据,其华丽的界面却有苹果的风格. 下载地址:http://www.devstore.cn/code/info/266.html 运行截图: 版权声明:本文为博主原创文章,未经博主允许不得转载.

15款HTML5/CSS3案例展示,导航,日历,钟表。

对于前端开发者来说,分享一些优秀的HTML5应用可以直接拿来用,更重要的是可以激发创作的灵感.今天我们要分享9款精挑细选的HTML5应用,个个都是干货. 1.HTML5/CSS3滑块动画菜单 图标动画很酷 CSS3菜单我们之前已经分享很多了,有3D菜单.下拉菜单.Tab菜单等,具体大家可以移步至CSS3菜单栏目下查找.今天我们要分享的这款HTML5/CSS3滑块动画菜单非常酷,鼠标滑过菜单项时会有一个漂亮的遮罩移动过来,并且这款动画菜单还有非常酷的图标,菜单整体效果很大气. 在线演示     

9款超绚丽的HTML5/CSS3应用和动画特效

1.CSS3飘带状3D菜单 菜单带小图标 这次我们要来分享一款很特别的CSS3菜单,菜单的外观是飘带状的,并且每一个菜单项有一个精美的小图标,鼠标滑过菜单项时,菜单项就会向上凸起,像是飘带飘动一样,形成非常酷的3D视觉效果.这款CSS3飘带状3D菜单非常适合作一些活动页面的菜单导航. 在线演示 源码下载 2.HTML5/CSS3 3D纸片折叠动画 今天我们再来分享一款非常华丽的HTML5/CSS3 3D动画特效,尽管它目前很少能在项目中应用,但从源码中我们可以学到很多HTML5 3D动画的制作知