基于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实现背景模糊的三种方式
Mar 09 HTML / CSS
不同浏览器对CSS3和HTML5的支持状况
Oct 31 HTML / CSS
一款css实现的鼠标经过按钮的特效
Sep 11 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
Nov 01 HTML / CSS
css3翻牌翻数字的示例代码
Feb 07 HTML / CSS
CSS3 border-radius圆角的实现方法及用法详解
Sep 14 HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
Jan 26 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
Aug 28 HTML / CSS
canvas探照灯效果的示例代码
Nov 30 HTML / CSS
移动端HTML5开发神器之vconsole详解
Dec 15 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
php相当简单的分页类
2008/10/02 PHP
PHP Socket 编程
2010/04/09 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
卖车协议书范例
2014/09/16 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
预备党员半年考察意见
2015/06/01 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
html粘性页脚的具体使用
2022/01/18 HTML / CSS