基于HTML5+CSS3实现简单的时钟效果


Posted in HTML / CSS onSeptember 11, 2017

目的:

利用html5,css实现钟摆效果

知识点:

1) 利用position/left/top和calc()实现元素的水平和垂直居中;

2) 利用CSS3的animation/transform/transform-origin属性定义动画;

3) 利用transform-origin实现旋转原点的圆心调整

废话不多说了,直接看代码吧,具体代码如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        li{
            list-style:none;
        }
        #box{
            width: 400px;
            height: 400px;
            position: absolute;
            top:calc(50% - 200px);
            left:calc(50% - 200px);
            border: 2px solid palegoldenrod;
        }
        #dial{
            width: 200px;
            height: 200px;
            position: absolute;
            top:calc(50% - 100px);
            left:calc(50% - 100px);
            border: 2px solid cyan;
            border-radius: 50%;
        }   
        .scaleIndex{
            width: 4px;
            height: 12px;
            position: absolute;
            top: 0;
            left: calc(50% - 2px);
            background-color: gray;
            transform-origin: 2px 100px;
        }
        .angle30{transform : rotate(30deg);}
        .angle60{transform : rotate(60deg);}
        .angle90{transform : rotate(90deg);}
        .angle120{transform : rotate(120deg);}
        .angle150{transform : rotate(150deg);}
        .angle180{transform : rotate(180deg);}
        .angle210{transform : rotate(210deg);}
        .angle240{transform : rotate(240deg);}
        .angle270{transform : rotate(270deg);}
        .angle300{transform : rotate(300deg);}
        .angle330{transform : rotate(330deg);}
        #fixPoint{
            width: 10px;
            height: 10px;
            position: absolute;
            top:calc(50% - 5px);
            left:calc(50% - 5px);
            background-color: cadetblue;
            border-radius: 50%;
        }
        #hourHand{
            width: 6px;
            height: 70px;
            position:absolute;
            top: 40px;
            left: calc(50% - 3px);
            background-color: darkblue;
            transform-origin: 50% 60px;
        }
        #minuteHand{
            width: 4px;
            height: 75px;
            position:absolute;
            top: 35px;
            left: calc(50% - 2px);
            background-color: yellow;
            transform-origin: 50% 65px;
        }
        #secondHand{
            width: 2px;
            height: 90px;
            position:absolute;
            top: 20px;
            left: calc(50% - 1px);
            background-color: red;
            transform-origin: 50% 80px;
        }
    </style>
</head>
<body>
    <div id = "box">
            <div id = 'dial'>
                <ul id = "scale">
                    <li class = "scaleIndex"></li>
                    <li class = "scaleIndex angle30"></li>
                    <li class = "scaleIndex angle60"></li>
                    <li class = "scaleIndex angle90"></li>
                    <li class = "scaleIndex angle120"></li>
                    <li class = "scaleIndex angle150"></li>
                    <li class = "scaleIndex angle180"></li>
                    <li class = "scaleIndex angle210"></li>
                    <li class = "scaleIndex angle240"></li>
                    <li class = "scaleIndex angle270"></li>
                    <li class = "scaleIndex angle300"></li>
                    <li class = "scaleIndex angle330"></li>
                </ul>
                <div id = "fixPoint"></div>
                <div id = "hourHand"></div>
                <div id = "minuteHand"></div>
                <div id = "secondHand"></div>
            </div>
        </div>
<script type = 'text/javascript' src = 'js/jquery-3.2.1.js'></script>
<script type = "text/javascript">
window.onload = function(){
            var hourHand = document.getElementById('hourHand');
            var minuteHand = document.getElementById('minuteHand');
            var secondHand = document.getElementById('secondHand');
setInterval(function(){
                    var currentTime = new Date();
                    var hourValue = currentTime.getHours();
                    var hourAngle = hourValue / 24 * 360 + 'deg';
                    var minuteValue = currentTime.getMinutes();
                    var minuteAngle = minuteValue / 60 * 360 + 'deg';
                    var secondValue = currentTime.getSeconds();
                    var secondAngle = secondValue / 60 * 360 + 'deg';
                    console.log(hourAngle);
// 方法一:利用jquery的css()增加属性
var cmdHour = 'rotate('+ hourAngle +')';
$('#hourHand').css({transform:'rotate('+ hourAngle +')'});
var cmdMinute = 'rotate('+ minuteAngle +')';
$('#minuteHand').css({transform:cmdMinute});
var cmdSecond = 'rotate('+ secondAngle +')';
$('#secondHand').css({transform:cmdSecond});

// 方法二:利用DOM元素的style属性设置
//      hourHand.style.transform = 'rotate('+ hourAngle + ')';
//      minuteHand.style.transform = 'rotate('+ minuteAngle + ')';
//      secondHand.style.transform = 'rotate('+ secondAngle + ')';  

},1000);
}
    </script>
</body>
</html>

总结

以上所述是小编给大家介绍的基于HTML5+CSS3实现简单的时钟效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
CSS3教程:background-clip和background-origin
Oct 17 HTML / CSS
CSS3属性使网站设计增强同时不消弱可用性
Aug 29 HTML / CSS
用CSS3绘制三角形的简单方法
Jul 17 HTML / CSS
CSS3绘制有活力的链接下划线
Jul 14 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
Nov 16 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
Sep 10 HTML / CSS
Html5+JS实现手机摇一摇功能
Apr 24 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
Mar 14 HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
Dec 08 HTML / CSS
HTML基础详解(下)
Oct 16 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
Sep 07 #HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 #HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
Aug 28 #HTML / CSS
HTML5实现可缩放时钟代码
Aug 28 #HTML / CSS
HTML5操作WebSQL数据库的实例代码
Aug 26 #HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 #HTML / CSS
HTML5中的拖放实现详解
Aug 23 #HTML / CSS
You might like
pdo中使用参数化查询sql
2011/08/11 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python的Django框架安装全攻略
2015/07/15 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
python中list列表的高级函数
2016/05/17 Python
Python如何为图片添加水印
2016/11/25 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Python logging模块用法示例
2018/08/28 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Python devel安装失败问题解决方案
2020/06/09 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
什么时候用assert
2015/05/08 面试题
2014年教师党员公开承诺书
2014/05/28 职场文书
法制演讲稿
2014/09/10 职场文书
家装业务员岗位职责
2015/04/03 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android