프로젝트에서 자주 접하는 진자효과를 구현하기 위해 HTML5와 CSS를 사용합니다. 오늘은 HTML5+CSS3 기반의 간단한 시계 효과 구현 코드를 스크립트 홈 플랫폼에서 공유하겠습니다. 필요한 친구들이 참고할 수 있습니다.
목적:
진자 효과를 얻기 위해 HTML5와 CSS를 사용하세요
지식 포인트:
1) position/left/top 및 calc()를 사용하여 요소의 수평 및 수직 중앙 정렬을 달성합니다.
2) CSS3 애니메이션 사용 /transform/transform-origin 속성은 애니메이션을 정의합니다.
3) 변환 원점을 사용하여 회전 원점의 중심을 조정합니다. 코드는 다음과 같습니다.
<!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> <p id = "box"> <p 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> <p id = "fixPoint"></p> <p id = "hourHand"></p> <p id = "minuteHand"></p> <p id = "secondHand"></p> </p> </p> <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>
위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
html5, css3 및 jquery를 사용하여 음악 플레이어 구현JavaScript와 캔버스를 사용하여 이미지 자르기 구현위 내용은 HTML5 및 CSS3 시계 구현의 효과에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!