• 重力感应的自制时钟


      1 <!DOCTYPE html>
      2 <html>
      3 <head lang="en">
      4     <meta charset="UTF-8">
      6     <style>
      7         *{
      8             margin: 0;
      9             padding: 0;
     10             list-style: none;
     11         }
     12         .clock{
     13             300px;
     14             height:300px;
     15             background: -webkit-radial-gradient(center center,circle, #eee,#666);
     16             /*background: url(tick.png) no-repeat;*/
     17             background-size: cover;
     18             border-radius: 50%;
     19             position: absolute;
     20             left: 100px;
     21             top: 100px;
     22             border: 1px solid #000;
     23             box-shadow: 0px 0px 4px #000;
     24         }
     25         .cap{
     26              20px;
     27             height: 20px;
     28             background: -webkit-radial-gradient(center center,circle,#ccc,#000);
     29             position: absolute;
     30             left: 50%;
     31             top: 50%;
     32             margin-top: -10px;
     33             margin-left: -10px;
     34             border-radius: 50%;
     35         }
     36         .hour{
     37             14px;
     38             height:80px;
     39             background: #000;
     40             position: absolute;
     41             left: 50%;
     42             margin-left: -7px;
     43             top: 50%;
     44             margin-top: -80px;
     45             border-radius: 50% 50% 0 0;
     46 
     47             transform-origin: center bottom;
     48 
     49 
     50         }
     51         .min{
     52             10px;
     53             height:100px;
     54             background: #000;
     55 
     56             position: absolute;
     57             left: 50%;
     58             margin-left: -5px;
     59             top: 50%;
     60             margin-top: -100px;
     61             border-radius: 50% 50% 0 0;
     62 
     63             transform-origin: center bottom;
     64 
     65         }
     66         .sec{
     67             4px;
     68             height:120px;
     69             background: #f00;
     70 
     71             position: absolute;
     72             left: 50%;
     73             margin-left: -2px;
     74             top: 50%;
     75             margin-top: -120px;
     76             border-radius: 50% 50% 0 0;
     77 
     78             transform-origin: center bottom;
     79         }
     80         .scale{
     81             2px;
     82             height:10px;
     83             background: #000;
     84             position: absolute;
     85             left: 50%;
     86             margin-left: -1px;
     87             transform-origin: center 150px;
     88         }
     89         .bs{
     90             4px;
     91             height:14px;
     92             background: #000;
     93             position: absolute;
     94             left: 50%;
     95             margin-left: -2px;
     96             transform-origin: center 150px;
     97         }
     98         .bs strong{
     99             margin-top: 20px;
    100             position: absolute;
    101             font-size: 24px;
    102             100px;
    103             text-align: center;
    104             left: 50%;
    105             margin-left: -50px;
    106             text-shadow: 1px 1px 3px #000;
    107         }
    108     </style>
    109     <script>
    110         window.onload=function(){
    111             var oDiv=document.querySelector('.clock');
    112 
    113             var oH=document.querySelector('.clock .hour');
    114             var oM=document.querySelector('.clock .min');
    115             var oS=document.querySelector('.clock .sec');
    116 
    117             //画刻度
    118             var N=60;
    119             for(var i=0; i<N; i++){
    120                 var oSpan=document.createElement('span');
    121 
    122                 if(i%5==0){
    123                     oSpan.className='bs';
    124 
    125                     var n=i/5==0?12:i/5;
    126 
    127                     oSpan.innerHTML='<strong>'+n+'</strong>';
    128                     oSpan.children[0].style.transform='rotate('+-i*6+'deg)';
    129                 }else{
    130                     oSpan.className='scale';
    131                 }
    132 
    133                 oSpan.style.transform='rotate('+6*i+'deg)';
    134                 oDiv.appendChild(oSpan);
    135             }
    136 
    137             function tick(){
    138                 var oDate=new Date();
    139                 var h=oDate.getHours();
    140                 var m=oDate.getMinutes();
    141                 var s=oDate.getSeconds();
    142                 var ms=oDate.getMilliseconds();
    143 
    144                 oH.style.transform='rotate('+(h*30+m/60*30)+'deg)';
    145                 oM.style.transform='rotate('+(m*6+s/60*6)+'deg)';
    146                 oS.style.transform='rotate('+(s*6+ms/1000*6)+'deg)';
    147             }
    148             tick();
    149             setInterval(tick,30);
    150 
    151             //以下拖拽
    152             var iSpeedX=0;
    153             var iSpeedY=0;
    154 
    155             var lastX=0;
    156             var lastY=0;
    157 
    158             var timer=null;
    159 
    160             oDiv.onmousedown=function(ev){
    161                 var oEvent=ev || event;
    162                 var disX=oEvent.clientX-oDiv.offsetLeft;
    163                 var disY=oEvent.clientY-oDiv.offsetTop;
    164 
    165                 clearInterval(timer);
    166 
    167                 document.onmousemove=function(ev){
    168                     var oEvent=ev || event;
    169                     oDiv.style.left=oEvent.clientX-disX+'px';
    170                     oDiv.style.top=oEvent.clientY-disY+'px';
    171 
    172                     //计算速度
    173                     iSpeedX=oEvent.clientX-lastX;
    174                     iSpeedY=oEvent.clientY-lastY;
    175 
    176                     lastX=oEvent.clientX;
    177                     lastY=oEvent.clientY;
    178                 };
    179 
    180                 document.onmouseup=function(){
    181                     document.onmousemove=null;
    182                     document.onmouseup=null;
    183 
    184                     duangMove();
    185                 };
    186                 return false;
    187             };
    188 
    189             function duangMove(){
    190                 timer=setInterval(function(){
    191                     iSpeedY+=3;
    192 
    193                     var l=oDiv.offsetLeft+iSpeedX;
    194                     var t=oDiv.offsetTop+iSpeedY;
    195 
    196                     if(t>=document.documentElement.clientHeight-oDiv.offsetHeight){
    197                         t=document.documentElement.clientHeight-oDiv.offsetHeight;
    198                         iSpeedY*=-0.8;
    199                         iSpeedX*=0.8;
    200                     }
    201                     if(t<=0){
    202                         t=0;
    203                         iSpeedY*=-0.8;
    204                         iSpeedX*=0.8;
    205                     }
    206                     if(l>=document.documentElement.clientWidth-oDiv.offsetWidth){
    207                         l=document.documentElement.clientWidth-oDiv.offsetWidth;
    208                         iSpeedX*=-0.8;
    209                         iSpeedY*=0.8;
    210                     }
    211                     if(l<=0){
    212                         l=0;
    213                         iSpeedX*=-0.8;
    214                         iSpeedY*=0.8;
    215                     }
    216 
    217                     oDiv.style.left=l+'px';
    218                     oDiv.style.top=t+'px';
    219 
    220                     if(Math.abs(iSpeedX)<1)iSpeedX=0;
    221                     if(Math.abs(iSpeedY)<1)iSpeedY=0;
    222 
    223                     if(iSpeedX==0 && iSpeedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight){
    224                         clearInterval(timer);
    225                     }
    226                 },30);
    227             }
    228         };
    229     </script>
    230 </head>
    231 <body>
    232     <div class="clock">
    233         <div class="hour"></div>
    234         <div class="min"></div>
    235         <div class="sec"></div>
    236         <div class="cap"></div>
    237     </div>
    238 </body>
    239 </html>
  • 相关阅读:
    【DL】如何使用MMSegmentation训练数据集
    【python基础】Python错误:AttributeError: module 'json' has no attribute 'loads'解决办法
    【python基础】如何理解Python装饰器?
    【DL】如何生成用于训练的数据集
    【pytorch基础】基于训练的pytorch模型转换为onnx模型并测试
    【python基础】JupyterNotebook配置远程登录
    【工具使用】标注工具Labelme的安装以及使用
    【leetcode_easy_math】892. Surface Area of 3D Shapes
    【leetcode_easy】1636. Sort Array by Increasing Frequency
    【leetcode_easy】1640. Check Array Formation Through Concatenation
  • 原文地址:https://www.cnblogs.com/lixuekui/p/5847587.html
Copyright © 2020-2023  润新知