๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Dev

[HTML/CSS] ๋””์ง€ํ„ธ ์‹œ๊ณ„ ํด๋ก  ์ฝ”๋”ฉํ•˜๋ฉด์„œ HTML, CSS, Javascript ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

jcowwk 2025. 2. 4. 11:36

๋””์ง€ํ„ธ ์‹œ๊ณ„ ํด๋ก  ์ฝ”๋”ฉํ•˜๋ฉด์„œ HTML, CSS, Javascript ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์•Œ์•„๋ณด๊ธฐ


1. HTML

2. CSS

3. Javascript


 

์œ„์™€ ๊ฐ™์€ ๋””์ง€ํ„ธ ์‹œ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ HTML, CSS, Javascript์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. HTML

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Clock</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>

<div class="clock-container">
    <div class="clock">
        <div class="time-segment" id="hours">00
            <div class="segment-label">Hours</div>
        </div>
        <div class="time-segment" id="minutes">00
            <div class="segment-label">Minutes</div>
        </div>
        <div class="time-segment" id="seconds">00
            <div class="segment-label">Seconds</div>
        </div>
    </div>
    <div class="date" id="date">Loading...</div>
</div>

<script src="script.js"></script>

</body>
</html>

 

- <!DOCTYPE html>

HTML ๋ฌธ์„œ์˜ ๋ฌธ์„œ ์œ ํ˜• ์„ ์–ธ์ž…๋‹ˆ๋‹ค.

์ตœ์‹  HTML5 ๋ฌธ์„œ์ž„์„ ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

 

- <html>

HTML ๋ฌธ์„œ์˜ ์‹œ์ž‘ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

1. <html lang="ko">

lang="ko"๋Š” ๋ฌธ์„œ์˜ ๊ธฐ๋ณธ ์–ธ์–ด๋ฅผ ํ•œ๊ตญ์–ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

- <head>

์›น ํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

1. <meta charset="UTF-8">

๋ฌธ์ž์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ UTF-8๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

2. <meta name="viewport" content="width=device-width, initial-scale=1.0">

๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์„ ์œ„ํ•ด ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ์žฅ์น˜ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

3. <title>Clock</title>

<title>์€ ๋ธŒ๋ผ์šฐ์ € ํƒญ์— ํ‘œ์‹œ๋  ํŽ˜์ด์ง€ ์ œ๋ชฉ์„ ์ •ํ•˜๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

4. <link rel="stylesheet" href="style.css">

<link>๋Š” ์™ธ๋ถ€ ํŒŒ์ผ(๋ฆฌ์†Œ์Šค)๋ฅผ HTML ๋ฌธ์„œ์— ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

CSS, ์•„์ด์ฝ˜, ํฐํŠธ ๋“ฑ์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  ํ˜„์žฌ๋Š” ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” style.css ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

- <body>

์‹ค์ œ ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

1. <div class="clock-container">

<div>๋Š” ๋‚ด์šฉ์„ ๋ฌถ๊ฑฐ๋‚˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์Šคํƒ€์ผ๋ง ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์„ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

2. <div class="time-segment" id="hours">00

class์™€ id๋Š” ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋‚˜ ์Šคํƒ€์ผ ๋ฐ ๋™์ž‘์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

class๋Š” ์—ฌ๋Ÿฌ HTML ์š”์†Œ์— ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ๋™์ž‘์„ ๋ถ€์—ฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ class ์ด๋ฆ„์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ์š”์†Œ์— ๊ฐ™์€ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class๋ฅผ CSS์—์„œ ์‚ฌ์šฉํ•˜๋ฉด .ํด๋ž˜์Šค๋ช… {} ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

id๋Š” ํ•˜๋‚˜์˜ HTML ์š”์†Œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ , ํŠน์ • ์š”์†Œ์— ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ javascript์—์„œ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ id๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์„œ ๋‚ด์—์„œ ์œ ์ผํ•ด์•ผ ํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

id๋ฅผ CSS์—์„œ ์‚ฌ์šฉํ•˜๋ฉด #์•„์ด๋””๋ช… {} ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

id๊ฐ€ class ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์Šต๋‹ˆ๋‹ค.

 

- <script>

javascript ์‹œ์ž‘ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

1. <script src="script.js"></script>

ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” script.js ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ ๋™์  ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

2. CSS

@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&amp;display=swap');

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background: linear-gradient(45deg, #1a1a2e, #16213e);
            margin: 0;
            font-family: 'Orbitron', sans-serif;
            overflow: hidden;
        }

        .clock-container {
            background: rgba(255, 255, 255, 0.1);
            border-radius: 20px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.2);
            padding: 40px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
            text-align: center;
            transition: all 0.3s ease;
        }

        .clock {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 20px;
        }

        .time-segment {
            background: rgba(0, 0, 0, 0.5);
            border-radius: 10px;
            padding: 15px;
            min-width: 100px;
            color: #00ff9f;
            font-size: 4rem;
            font-weight: bold;
            position: relative;
            overflow: hidden;
            box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
            transition: transform 0.2s ease;
        }

        .time-segment:hover {
            transform: scale(1.05);
        }

        .segment-label {
            position: absolute;
            bottom: -25px;
            left: 0;
            width: 100%;
            color: #4eb8dd;
            font-size: 0.8rem;
            text-transform: uppercase;
        }

        .date {
            margin-top: 20px;
            color: #4eb8dd;
            font-size: 1.2rem;
            letter-spacing: 2px;
        }

        @media (max-width: 600px) {
            .time-segment {
                font-size: 2.5rem;
                padding: 10px;
                min-width: 60px;
            }
            .clock-container {
                padding: 20px;
            }
        }

 

- @

@๋Š” CSS ๊ทœ์น™์— ํŠน์ˆ˜ํ•œ ์ง€์‹œ๋ฌธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ์ž…๋‹ˆ๋‹ค. @import, @media, @keyframes, @font-face ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap');

@import๋Š” ์™ธ๋ถ€ ์Šคํƒ€์ผ์‹œํŠธ๋‚˜ ํฐํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋งํฌ์—์„œ๋Š” Google Fonts์—์„œ Orbitron ํฐํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. @media

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ(Media Query)๋ฅผ ์ •์˜ํ•˜๋Š” CSS ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์€ ํ™”๋ฉด ํฌ๊ธฐ๋‚˜ ํ•ด์ƒ๋„, ๊ธฐ๊ธฐ ์œ ํ˜• ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

HTML์€ ์ฝ˜ํ…์ธ ์™€ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ์  ์š”์†Œ์ด๊ณ , CSS๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ง€๋Š”์ง€์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํŒŒ์ผ์—์„œ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ๊ณ ๋ คํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

3. Javascript

function updateClock() {
    const now = new Date();
    const hours = now.getHours().toString().padStart(2, '0');
    const minutes = now.getMinutes().toString().padStart(2, '0');
    const seconds = now.getSeconds().toString().padStart(2, '0');

    const days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
    const months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];

    document.getElementById('hours').textContent = hours;
    document.getElementById('minutes').textContent = minutes;
    document.getElementById('seconds').textContent = seconds;

    document.getElementById('date').textContent =
        `${days[now.getDay()]}, ${now.getDate()} ${months[now.getMonth()]} ${now.getFullYear()}`;
}

// Initial call to display clock immediately
updateClock();

// Update clock every second
setInterval(updateClock, 1000);

 

- const now = new Data();

ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

์ด ๊ฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

- document.getElementById('hours').textContext = hours;

ํ•ด๋‹น HTML ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ์˜ ํ…์ŠคํŠธ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

 

1. document.getElementById('date').textContent =
    `${days[now.getDay()]}, ${now.getDate()} ${months[now.getMonth()]} ${now.getFullYear()}`;

ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ${}๋Š” ๋ฌธ์ž์—ด ๋‚ด์—์„œ ๋™์ ์œผ๋กœ ๊ฐ’์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋‚ ์งœ๋ฅผ ์‰ฝ๊ฒŒ ํ˜•์‹ํ™”ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋ฉฐ ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ฐ„๊ฒฐํ•ด์ง€๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

 

HTML์— ๋Œ€ํ•ด ์–ด๋””๊นŒ์ง€ ์•Œ๊ณ  ์žˆ๋‚˜์š”? (์›น ๊ฐœ๋ฐœ 10๋…„์ฐจ๊ฐ€ ์ „ํ•˜๋Š” HTML๊ณผ HTML5 ์‚ฌ์šฉ๋ฒ•) I ์ด๋žœ์„œ ๋ธ”๋กœ๊ทธ

๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด HTML์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๊ทธ ๋ฐฐ๊ฒฝ๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ๊นŠ์ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ์š”. HTML๋ถ€ํ„ฐ HTML 5๋ž€ ๋ฌด์—‡์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ์˜ ์‚ฌ์šฉ๋ฒ•๊นŒ์ง€ ๋ชจ๋‘ ์ •๋ฆฌํ•ด์„œ ์•Œ๋ ค

www.elancer.co.kr

 

 

01-1 CSS๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

##์›น ๋ฌธ์„œ์˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” CSS CSS๋Š” ์บ์Šค์ผ€์ด๋”ฉ ์Šคํƒ€์ผ์‹œํŠธ(Cascading Stylesheet)์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์บ์Šค์ผ€์ด๋”ฉ(Cascading)์ด๋ž€ ‘ํญํฌ๊ฐ™์€…

wikidocs.net

 

https://codewithcurious.com/projects/digital-clock-with-html-css-and-javascript/

 

๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š” !

ํ”ผ๋“œ๋ฐฑ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค <3