欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  使用css3绘制出圆形动态时钟的原理
 
  众所周知的是div形状是方形的,那么我们首先需要使用border-radius属性将其变换成圆形。
 
  为了使指针转动起来,我们需要使用-webkit-transform-origin:center100px;来设置我们的旋转基点。然后利用-webkit-transform:rotate(0);让我们的li旋转相应的角度形成相应的刻度。
 
  设计好刻度之后,需要涉及一个nth-of-type()的选择器,用来规定其属于父元素的第几个子元素。
 
  在圆形时钟的正中心我们要设一个divicon用于指针的连接点。
 
  然后我们利用js获取div之后对表盘的刻度进行渲染。
 
  最后开一个定时器,每隔一秒执行一次函数。
 
  使用css3绘制出圆形动态时钟的代码
 
  
 
  
 
  
 
  
 
  <!DOCTYPEhtml>
 
  <html>
 
  <head>
 
  <metacharset="UTF-8"/>
 
  <title>钟表</title>
 
  <styleid="css">
 
  #wrap{width:200px;height:200px;border:2pxsolid#000;margin:100pxauto;border-radius:50%;position:relative;}
 
  #wrapul{margin:0;padding:0;height:200px;position:relative;list-style:none;}
 
  #wrapulli{width:2px;height:6px;background:#000;position:absolute;left:99px;top:0;-webkit-transform-origin:center100px;}
 
  /*#wrapulli:nth-of-type(1){-webkit-transform:rotate(0);}
 
  #wrapulli:nth-of-type(2){-webkit-transform:rotate(6deg);}
 
  #wrapulli:nth-of-type(3){-webkit-transform:rotate(12deg);}
 
  #wrapulli:nth-of-type(4){-webkit-transform:rotate(18deg);}
 
  #wrapulli:nth-of-type(5){-webkit-transform:rotate(24deg);}
 
  #wrapulli:nth-of-type(6){-webkit-transform:rotate(30deg);}
 
  #wrapulli:nth-of-type(7){-webkit-transform:rotate(36deg);}
 
  #wrapulli:nth-of-type(8){-webkit-transform:rotate(42deg);}*/
 
  #wrapulli:nth-of-type(5n+1){height:12px;}
 
  #hour{width:6px;height:45px;background:#000;position:absolute;left:97px;top:55px;-webkit-transform-origin:bottom;}
 
  #min{width:4px;height:65px;background:#999;position:absolute;left:98px;top:35px;-webkit-transform-origin:bottom;}
 
  #sec{width:2px;height:80px;background:red;position:absolute;left:99px;top:20px;-webkit-transform-origin:bottom;}
 
  .icon{width:20px;height:20px;background:#000;border-radius:50%;position:absolute;left:90px;top:90px;}
 
  </style>
 
  </head>
 
  <body>
 
  <divid="wrap">
 
  <ulid="list">
 
  <!--<li></li>
 
  <li></li>
 
  <li></li>
 
  <li></li>
 
  <li></li>
 
  <li></li>
 
  <li></li>
 
  <li></li>-->
 
  </ul>
 
  <divid="hour"></div>
 
  <divid="min"></div>
 
  <divid="sec"></div>
 
  <div></div>
 
  </div>
 
  <script>
 
  varoList=document.getElementById("list");//获取到刻度
 
  varoCss=document.getElementById("css");
 
  varoHour=document.getElementById("hour");//获取时针
 
  varoMin=document.getElementById("min");//获取分针
 
  varoSec=document.getElementById("sec");//获取秒针
 
  varoLi="";
 
  varsCss="";
 
  for(vari=0;i<60;i++){//一个表盘总共是60个刻度
 
  sCss+="#wrapulli:nth-of-type("+(i+1)+"){-webkit-transform:rotate("+i*6+"deg);}";
 
  oLi+="<li></li>";
 
  };
 
  oList.innerHTML=oLi;
 
  oCss.innerHTML+=sCss;//表盘刻度渲染完成
 
  toTime();
 
  setInterval(toTime,1000);
 
  functiontoTime(){
 
  varoDate=newDate();//获取当前时间
 
  variSec=oDate.getSeconds();//获取当前秒
 
  variMin=oDate.getMinutes()+iSec/60;//获取当前分
 
  variHour=oDate.getHours()+iMin/60;//获取当前时
 
  oSec.style.WebkitTransform="rotate("+iSec*6+"deg)";//秒针转动角度1秒6度(表盘一圈360度一圈60秒所以一秒6度)
 
  oMin.style.WebkitTransform="rotate("+iMin*6+"deg)";//分钟转动角度1分6度(表盘一圈360度一圈60分所以一分6度)
 
  oHour.style.WebkitTransform="rotate("+iHour*30+"deg)";//时针转动角度一小时30度(表盘一圈360度一圈12小时所以一小时30度)
 
  };
 
  </script>
 
  </body>
 
  </html>


20180312211258103.gif




本文转载自中文网
 

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/css3-style/c55405.shtml