css3和原生js时钟

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    div{
        width:200px;
        height:200px;
        border-radius: 50%;
        border:1px solid #000;
        position: relative;
        margin:5px auto;
        text-align: center;
        box-shadow: 0px 0px 20px 5px #000;
    }
    div span{
        transform-origin: bottom center;
    }
    .sec{
        position: absolute;
        top:50%;
        left:50%;
        margin-left:-2px;
        margin-top:-80px;
        height:80px;
        width:4px;
        background: red;
        border-radius: 50% 50% 0 0;
    }
    .min{
        position: absolute;
        top:50%;
        left:50%;
        margin-left:-3px;
        margin-top:-60px;
        height:60px;
        width:6px;
        background: #000;
        border-radius: 50% 50% 0 0;
    }
    .hou{
        position: absolute;
        top:50%;
        left:50%;
        margin-left:-4px;
        margin-top:-40px;
        height:40px;
        width:8px;
        background: #000;
        border-radius: 50% 50% 0 0;
    }
    .cap{
        position: absolute;
        top:50%;
        left:50%;
        margin-left:-6px;
        margin-top:-6px;
        height:12px;
        width:12px;
        background: radial-gradient(#ccc,#999);
        border-radius: 50%;
    }
    i b{
        position: absolute;
        top:12px;
        left:-4px;
    }
    </style>
    <script>
    window.onload=function(){
        var aSpan=document.querySelectorAll(‘span‘);
        var oBox=document.getElementById(‘box‘);
        clock();
        setInterval(clock,30);

        for (var i = 0; i <60; i++) {
            var oI=document.createElement(‘i‘);
            oI.style.width=‘6px‘;
            if(i%5){
                oI.style.height=‘8px‘;
            }else{
                oI.innerHTML=‘<b>‘+i/5+‘</b>‘;
                oI.children[0].style.transform=‘rotate(-‘+i*6+‘deg)‘;
                oI.style.height=‘16px‘;
            }

            oI.style.position=‘absolute‘;
            oI.style.top=‘0px‘;
            oI.style.left=‘100px‘;
            oI.style.background=‘#000‘;
            oI.style.transform=‘rotate(‘+i*6+‘deg)‘;
            oI.style.transformOrigin=‘0px 100px‘;

            oBox.appendChild(oI);
        }
        function clock(){
            var oDate=new Date();
            var h=oDate.getHours();
            var m=oDate.getMinutes();
            var s=oDate.getSeconds();
            var ms=oDate.getMilliseconds();

            aSpan[2].style.transform=‘rotate(‘+(360*(h%12)/12+m*30/60)+‘deg)‘;
            aSpan[1].style.transform=‘rotate(‘+(360*m/60+s*6/60)+‘deg)‘;
            aSpan[0].style.transform=‘rotate(‘+(360*s/60+ms*6/1000)+‘deg)‘;
        }
    };
    </script>
</head>
<body>
    <div id="box">
        <span class="sec"></span>
        <span class="min"></span>
        <span class="hou"></span>
        <p class="cap"></p>
    </div>
</body>
</html>
时间: 2024-10-13 16:21:51

css3和原生js时钟的相关文章

原生js实现的3个小特效(时钟、轮播图、选项卡)

时钟: <p id="timeTxt"></p>  //将获取到的时间显示在timeTxt这里面        <button onclick="startTime()">关闭</button>        <!--时钟-->        function startTime(){  //创建startTime()函数            var today=new Date();  //定义一个对象

基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转

基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠标点击屏幕时的坐标和鼠标移动时的坐标,来获得鼠标在X轴.Y轴移动的距离,将距离实时赋值给transform属性 从而通过改变transform:rotate属性值来达到3d立方体旋转的效果 HTML代码块: <body> <input type="button" clas

常用原生JS兼容写法

在我们前端开发中,经常会遇到兼容性的问题,因为要考虑用户会使用不同的浏览器来访问你的页面,你要保证你做的网页在任何一个浏览器中都能正常的运行,下面我就举几个常用原生JS的兼容写法: 1:添加事件方法 addHandler:function(element,type,handler){  if(element.addEventListener){//检测是否为DOM2级方法   element.addEventListener(type, handler, false);  }else if (e

原生js写的一个弧形菜单插件

弧形菜单是一种半弧式或者全弧形菜单,是一种不同于传统横向或者竖向菜单形式的菜单.最近在网上看到好多人写出了这种效果,于是也尝试自己写了一个. 实现方式:原生态js 主要结构: 1.参数合并 1 var defaultPra = { 2 mainMenuId: "ArcMenu",//主菜单id 3 menuBoxId:"menuBox",//菜单包裹id 4 position: "",//弧形菜单 5 customPosition:"0

利用css+原生js制作简易钟表

利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期以及时间,至于钟表上的刻度.数字等元素,因为量比较多,采用jvascript生成 <!doctype html> <html> <head> <meta charset="UTF-8"> <link rel='stylesheet' h

【原生JS插件】LoadingBar页面顶部加载进度条

先展示一下已经实现的效果: 看到手机上的浏览器内置了页面的加载进度条,想用在pc上. 网上搜了一下,看到几种页面loading的方法: 1.在body头部加入loading元素,在body页脚写入脚本让loading元素消失. 2.基于jquery,在页面的不同位置插入脚本,设置滚动条的宽度. 简单分析一下: 第一个明显不是我想要的. 第二个要在body前加载jquery,然后还要使用到jquery的动画方法,性能肯定达不到最优的状态. 自己的解决方法:原生JS+css3 上面的方法2其实是可以

利用tween,使用原生js实现模块回弹动画效果

最近有一个需求,就是当屏幕往下一定像素时,下方会有一个隐藏的模块马上显现出来,向上运动后带有回弹效果.然后屏幕滚回去时这个模块能够原路返回 其实这个效果css3就可以很轻松实现,但是公司要求最低兼容ie7,只能说是无缘了 后来,利用jq的animate也能够实现,但是不知道怎么回事 当滚回去时有延迟,好几秒后才能隐藏不见. 最终使用tween能够完美实现,只能说原生js的强大了. tween其实是一个函数库,里面都是些公式,比如说运动轨迹的算数公式. 实现效果:其实就是一个小方块弹啊弹. 首先给

原生js判断css动画结束 css 动画结束的回调函数

原文:原生js判断css动画结束 css 动画结束的回调函数 css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画是否结束:即使是采用CSS技术生成动画效果,JavaScript仍然能捕获动画或变换的结束事件: transitionend事件和animationend事件标准的浏览器事件,但在WebKit浏览器里你仍然需要使用webkit前缀,所以,我们不得不根据各种浏览器分别检测事件 var transitions = { 'transition':'tra

进阶前端高级攻城狮:使用单体模式设计原生js插件

----------基于上次写的jquery插件进行改造  http://www.cnblogs.com/GerryOfZhong/p/5533773.html 背景:jQuery插件依赖jQuery库,虽然jQuery使用十分广泛,但是对于移动开发或者在其他带宽需求需要注意的时候,就得考虑,因为我不可能完成一项技术相对来说引用了一个更大的库,这样之不值得的.所以原生js是所有浏览器都支持的一种语言,原生js相对来说就very good了,但是原生js相对新手或者没有很强基础的人来说还是相对比较