본문 바로가기
Front-End/JavaScript

jQuery 실습 - 아날로그 시계 만들기

by newny 2023. 3. 31.
반응형

moment.js를 이용하여 아날로그 시계 만들기

[결과]

14_아날로그시계.html

아날로그시계

 
[코드]

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>14_아날로그시계.html</title>
    <script src="jquery-3.6.4.min.js"></script>
    <script src="moment-with-locales.min.js"></script>
    <style>

        #warp {
            width: 600px;
            height: 600px;
            position: fixed;
            left: 50%;
            top: 50%;
            margin: -300px 0 0 -300px;
            font-family: bon, sans-serif;
        }

        #wrap h3 {
            height: 80px;
            font-size: 50px;
            text-align: center;
            line-height: 80px;
            font-weight: 700;
            color: #424242;
        }

        /* 시계 전체 원형 이미지 */
        #clock {
            width: 500px;
            height: 500px;
            background: url(../images/Clock-face.png);
            background-size: 100% 100%;
            margin: auto;
            position: relative;
            box-shadow: 0 12px 15px 0 rgba(0, 0, 0 , 0.24), 0 17px 50px 0 rgba(0, 0, 0 , 0.19);
        }

        /* 시침, 분침, 초침 이미지 출력 */
        #hour { background: url(../images/hour_hand.png); } 
        #min { background: url(../images/minute_hand.png); }
        #sec { background: url(../images/second_hand.png); }

        /* 시침, 분침, 초침 이미지가 출력되는 위치 지정 */
        .hand {
            width: 500px;
            height: 500px;
            position: absolute;
            left: 0;
            top: 0;
        }

    </style>
</head>
<body>

    <div id="wrap">
        <h3>아날로그시계</h3>
        <div id="clock"> <!-- 시계 전체 원형 -->
            <div id="hour" class="hand"></div> <!-- 시침 -->
            <div id="min" class="hand"></div> <!-- 분침 -->
            <div id="sec" class="hand"></div> <!-- 초침 -->
        </div>
    </div>


    <script>
		// 시, 분, 초 이미지 각도 꺾기
        showtime = () => {
            let now = moment()
            let hour = now.hour()
            let min = now.minute()
            let sec = now.second()

            // 초침 -> 1초: 6도
            $('#sec').css('transform', 'rotate(' + (sec*6) + 'deg)')

            // 분침 -> 1분: 6도,  1초: 0.1도
            $('#min').css('transform', 'rotate(' + ((min*6) + (sec*0.1)) + 'deg)')

            // 시침 -> 1시간: 30도,  1분: 0.5도, 1초: 0.025/3도
            $('#hour').css('transform', 'rotate(' + ((hour*30) + (min*0.5) + (sec*0.025/3)) + 'deg)')
        }

        showtime()

        // 1초마다 주기적 또는 반복적으로 함수 호출
        setInterval(showtime, 1000)

    </script>

</body>
</html>
시계이미지
반응형

'Front-End > JavaScript' 카테고리의 다른 글

Vue.js (1)  (0) 2023.05.25
AJAX(1)  (0) 2023.03.31
jQuery(2)  (0) 2023.03.30

댓글