HTML, CSS 및 Javascript를 사용한 아날로그 시계 디자인

안녕하세요 친구 여러분, 오늘 이 블로그에서는 HTML, CSS 및 Javascript를 사용하여 작동하는 아날로그 시계를 만드는 방법을 살펴보겠습니다. 이전 블로그에서 how to create responsive animated card designs using HTML and CSS only을 보았습니다. Javascript와 관련된 많은 게시물을 공유했습니다. 그러니 확인하는 것을 잊지 마세요here .

이번 디자인 [Analog Clock Desing]에는 위의 이미지에서 보시는 바와 같이 뉴모픽 디자인이 약간 들어간 시계가 있습니다. 시계는 기본적으로 "clockContainer"클래스가 있는 div입니다. 가장 작은 손이나 막대기는 1시간, 중간은 분, 마지막으로 가장 큰 것은 두 번째입니다. div "clockContainer"에는 배경 이미지가 있습니다.

다음을 좋아할 수 있습니다.


  • Filterable Image Gallery with preview
  • Responsive Animated Card Design
  • Custom Context or Right Click Menu Design
  • Responsive Sidebar Menu Design

  • 시계의 스틱이나 바늘을 회전시키는 자바스크립트 개념은 우선 1초의 간격을 설정합니다. 이는 코드가 간격 함수 내부에 작성되고 매초마다 실행된다는 것을 의미합니다. 우리가 얻는 간격 설정 함수에서 현재 시, 분, 초. 현재 시간을 얻은 후에는 시계의 막대나 바늘이 회전하는 정도를 찾아야 합니다.

    내가 말하려는 내용을 이해하기 어렵다면 소스 코드를 확인하고 미리보기도 할 수 있습니다.

    미리보기를 사용할 수 있습니다here.

    HTML 코드




    <!-- ----------------- Created by InCoder ----------------- -->
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Analog Clock Design - InCoder</title>
        <link rel="stylesheet" href="main.css">
        <script src="script.js" defer></script>
    </head>
    
    <body>
        <div class="clockContainer">
            <div class="hour"></div>
            <div class="minute"></div>
            <div class="second"></div>
        </div>
    </body>
    
    </html>
    


    CSS 코드




    /* ----------------- Created by InCoder ----------------- */
    
    * {
        margin: 0;
        padding: 0;
    }
    
    body {
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: rgb(47 53 77);
    }
    
    .clockContainer {
        width: 25rem;
        height: 25rem;
        position: relative;
        border-radius: 50%;
        background: url('https://drive.google.com/uc?id=1CMGPzgNoLSAiZI738O2DNEMtxUTBfzLM&export=view') no-repeat center;
        box-shadow: inset 0px 0px 8px rgb(204 204 204 / 20%), 0px 0px 20px rgb(204 204 204 / 20%);
    }
    
    .clockContainer::before {
        content: "";
        top: 50%;
        left: 50%;
        width: 5%;
        height: 5%;
        border-radius: 50%;
        position: absolute;
        background-color: #797979;
        transform: translate(-50%, -50%);
    }
    
    .clockContainer :is(.hour,
    .minute,
    .second) {
        position: absolute;
        border-radius: 1rem;
        transform-origin: bottom;
    }
    
    .hour {
        top: 21%;
        left: 49%;
        width: 2%;
        height: 28%;
        background-color: #797979;
    }
    
    .minute {
        top: 18%;
        left: 49%;
        width: 1.5%;
        height: 32%;
        background-color: #797979;
    }
    
    .second {
        top: 12%;
        left: 49.5%;
        width: 1%;
        height: 38%;
        z-index: -1;
        background-color: rgb(233 54 50);
    }
    


    자바스크립트 코드




    let hourStick = document.querySelector('.hour')
    minuteStick = document.querySelector('.minute')
    secondStick = document.querySelector('.second');
    
    window.addEventListener('load', () => {
        setInterval(() => {
            let date = new Date();
    
            let hour = date.getHours();
            let minute = date.getMinutes();
            let second = date.getSeconds();
    
            let hDeg = 30 * hour + minute / 2;
            let mDeg = 6 * minute;
            let sDeg = 6 * second;
    
            hourStick.style.transform = `rotate(${hDeg}deg)`;
            minuteStick.style.transform = `rotate(${mDeg}deg)`;
            secondStick.style.transform = `rotate(${sDeg}deg)`;
        }, 1000);
    });
    

    좋은 웹페이지 즐겨찾기