[HTML/CSS] ๋์งํธ ์๊ณ ํด๋ก ์ฝ๋ฉํ๋ฉด์ HTML, CSS, Javascript ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์์๋ณด๊ธฐ
๋์งํธ ์๊ณ ํด๋ก ์ฝ๋ฉํ๋ฉด์ 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&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