| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ์จ์ด๋ธ๊ตฌ๋
- ์๋จ
- English
- ssg๋๊ณก์
- ์์ดํฐ
- ๋ทํ๋ฆญ์ค
- ๊ฐ๋จ๋จน์๊ณณ
- ์กฐ์ ํฐ๋ฆฌ์ค
- ssgํธ๋๋ง์ผ๋๊ณก์
- ์ํ์ถ์ฒ
- ์ ํ์์น์ค์ง
- ๋ฐ๋ ผ400
- ์ ํ์์น์ค๊ทธ
- ์์ด์ ํ๋ธ
- ์์ด๊ณต๋ถ
- ์ํ์ถ์ฒ์ ํ๋ธ
- ์ง๋ฎค๋น
- ํดํ ์ด๋ธ์ค์น
- dp400
- ํดํ ์ด๋ธ์คํผ์ปค์ฐ๊ฒฐ
- ์์ด๋ฌธ๋ฒ
- ๊ฐ๋ฐ์ ์คํ
- ์กด์ผ
- Netflix
- ์ฝ์คํ์ค๋ทํ
- ์์ด์ ํ๋ธ์ถ์ฒ
- ์ํ์ถ์ฒ์ ํ๋ฒ
- ํฌ๋งํ์
- Movie
- ์ํผ๋ฐ
Archives
- Today
- Total
๋ฆฌ์
Visual Studio Code ์ค์ต๋ฌธ์ ํบ์๋ณด๊ธฐ ๋ณธ๋ฌธ
๊ฐ๋ฐ์ ํธ์์ธ/Front
Visual Studio Code ์ค์ต๋ฌธ์ ํบ์๋ณด๊ธฐ
๋ฆฌ์ ๐ซง 2026. 6. 22. 11:57<nav class="navbar"> <div class="logo">MyPortfolio</div>
<ul class="menu"> <li>ํ</li>
</ul>
</nav>
<header class="hero"> <h1>์๋ ํ์ธ์, CSS๋ฅผ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค</h1>
</header>
<section> <h2 class="section-title">ํ๋กํ</h2>
<div class="profile-card"> <span class="badge">NEW</span><h3>์ต์ง์</h3>
</div>
</section>
โ ์ <header>, <section>, <nav> ํ๊ทธ๋ฅผ ์ฐ๋์?
์ด๊ฒ๋ค์ '์๋งจํฑ ํ๊ทธ(Semantic Tags)'์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์๊ฒ "์ด ๋ถ๋ถ์ ๋ฉ๋ด์ผ", "์ด ๋ถ๋ถ์ ๋ณธ๋ฌธ์ด์ผ"๋ผ๊ณ ์๋ฏธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
๋จ์ํ <div>๋ก๋ง ๋๋ฐฐํ๋ ๊ฒ๋ณด๋ค ๊ฒ์ ์์ง์ด ๋ด ํ์ด์ง๋ฅผ ๋ ์ ์ดํดํ๊ฒ ๋์์ค๋๋ค.
โก ์ position: relative์ absolute๋ฅผ ์ฐ๋์?
- relative (์๋์ ์์น): "๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์์์ ๋ฐฐ์นํ๊ฒ ๋ค"๋ผ๋ ์ ์ธ์ ๋๋ค. .profile-card์ ์ค์ ๋ ์ด์ ์ ๋๋ค.
- absolute (์ ๋์ ์์น): "๊ฐ์ฅ ๊ฐ๊น์ด relative ๋ถ๋ชจ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๋ฅผ ์ก๊ฒ ๋ค"์ ๋๋ค. ๋๋ถ์ NEW ๋ฑ์ง๊ฐ ์นด๋ ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๊ณ ์ ํํ ์นด๋ ๋ด๋ถ ์ฐ์ธก ์๋จ์ ๊ณ ์ ๋ฉ๋๋ค.
โข ์ display: flex๋ฅผ ์์ฃผ ์ฐ๋์?
- justify-content: ์์๋ค์ ๊ฐ๋ก๋ก ์ด๋์ ๋์ง ์ ํฉ๋๋ค (์ค์, ์ ๋ ๋ฑ).
- gap: ์์๋ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ํ ์ค๋ก ๊น๋ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
- flex-wrap: ํ๋ฉด์ด ์ข์์ง๋ฉด ์๋๋ก ๋๊ธธ์ง ๋ง์ง ๊ฒฐ์ ํฉ๋๋ค.
<!DOCTYPE html>
<html lang="ko"> <head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS ์ข ํฉ ์ค์ต (๋ฌธ์ )</title>
<link rel="preconnect" href="
https://fonts.googleapis.com
">
<link rel="preconnect" href="
https://fonts.gstatic.com
" crossorigin>
<link href="
https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap
" rel="stylesheet">
<style>
/* [์ ์ฒด ์ด๊ธฐํ] ๋ชจ๋ ์์์ ๊ธฐ๋ณธ ๋ง์ง/ํจ๋ฉ์ 0์ผ๋ก ์์ ๊ณ ํฌ๊ธฐ ๊ณ์ฐ์ border ํฌํจ์ผ๋ก ํต์ผํฉ๋๋ค. */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* [๋ณธ๋ฌธ ์คํ์ผ] ์ ์ฒด ํฐํธ ์ ์ฉ, ๋ฐฐ๊ฒฝ์ ์ง์ ๋ฐ ์๋จ ๊ณ ์ ๋ฉ๋ด๋ฅผ ๊ณ ๋ คํด ์์ชฝ ์ฌ๋ฐฑ์ ์ค๋๋ค. */
body {
font-family: "Noto Sans KR", sans-serif;
background: #f0f0f0;
color: black;
padding-top: 55px;
line-height: 1.6;
}
/* [๋ฆฌ์คํธ ์ด๊ธฐํ] ul, ol ํ๊ทธ์ ๊ธฐ๋ณธ ๋ถ๋ ํฌ์ธํธ(์ )๋ฅผ ์ ๊ฑฐํฉ๋๋ค. */
ul, ol {
list-style: none;
}
/* [๋ค๋น๊ฒ์ด์ ๋ฐ] ํ๋ฉด ์๋จ์ ๊ณ ์ ํ๋ฉฐ, Flexbox๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ค์ ์์์ผ๋ก ๋ฐฐ์นํฉ๋๋ค. */
.navbar {
position: fixed; /* ์คํฌ๋กคํด๋ ํ๋ฉด ์๋จ์ ๊ณ ์ ๋ฉ๋๋ค. */
top: 0;
left: 0;
width: 100%;
height: 55px;
background: #2c3e50;
border-bottom: 3px solid white;
display: flex; /* ์์ ์์๋ค์ ๊ฐ๋ก๋ก ๋์ดํฉ๋๋ค. */
justify-content: space-between; /* ๋ก๊ณ ์ ๋ฉ๋ด ์ฌ์ด๋ฅผ ์ต๋ํ ๋ฒ๋ฆฝ๋๋ค. */
padding: 0 24px;
align-items: center; /* ์ธ๋ก ์ค์ ์ ๋ ฌ์ ํฉ๋๋ค. */
color: white;
}
/* [๋ฉ๋ด ๋ชฉ๋ก] ๋ฉ๋ด ํญ๋ชฉ๋ค์ ๊ฐ๋ก๋ก ๋ฐฐ์นํ๊ณ gap์ผ๋ก ๊ฐ๊ฒฉ์ ์ค๋๋ค. */
.menu {
display: flex;
gap: 20px;
}
/* [๋ฉ๋ด ์์ดํ ] ๋ง์ฐ์ค ์ปค์๋ฅผ ์ฌ๋ ธ์ ๋์ ๋ณํ(transition)๋ฅผ ์ค์ ํฉ๋๋ค. */
.menu li {
cursor: pointer;
transition: all 0.1s ease;
}
/* [๋ฉ๋ด Hover] ๋ง์ฐ์ค๊ฐ ์ฌ๋ผ๊ฐ๋ฉด ์ด์ง ์์์ง๊ณ ๊ธ์จ๊ฐ ๊ตต์ด์ง๋๋ค. */
.menu li:hover {
scale: calc(0.98);
font-weight: 600;
}
/* [๋ฐฐ๋] ํ์ด์ง ์๋จ ์ ๋ชฉ๊ณผ ๋ถ์ ๋ชฉ์ ์ค์ ์ ๋ ฌํฉ๋๋ค. */
.hero {
text-align: center;
color: white;
background: #4a90d9;
padding: 55px 0;
}
.hero h1 {
font-size: 30px;
margin-bottom: 10px;
}
/* [์น์ ํ์ดํ] ๊ฐ ๊ตฌ์ญ์ ์ ๋ชฉ์ ์ค์์ ๋ฐฐ์นํ๊ณ ์ฌ๋ฐฑ์ ์ค๋๋ค. */
.section-title {
text-align: center;
margin: 30px 0;
}
/* [ํ๋กํ ์นด๋] ๋ฐ์ค ๋ชจ๋ธ๋ก ์นด๋๋ฅผ ๋ง๋ค๊ณ , ์์ ์์ ๋ฐฐ์น๋ฅผ ์ํด position์ relative๋ก ์ค์ ํฉ๋๋ค. */
.profile-card {
width: 300px;
background: white;
margin: 0 auto; /* ์ข์ฐ ๋ง์ง ์๋ ์ ์ฉ์ผ๋ก ์ค์ ์ ๋ ฌ */
padding: 24px;
border: 1px solid #e4e4e4;
border-radius: 8px;
position: relative; /* ์์์ absolute ์์น ๋ฐฐ์น์ ๊ธฐ์ค์ (๊ธฐ์ค์ ์์ฑ) */
}
/* [๋ฑ์ง] ๋ถ๋ชจ ์นด๋ ๋ด ์ฐ์ธก ์๋จ์ ์ ๋ ์์น๋ก ๋ฐฐ์นํฉ๋๋ค. */
.badge {
position: absolute; /* ๋ถ๋ชจ(profile-card)๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น */
right: 10px;
top: 10px;
background: #e74c3c;
color: white;
font-size: 12px;
padding: 4px 8px;
border-radius: 4px;
}
/* [๊ธฐ์ ์คํ ์ปจํ ์ด๋] Flexbox๋ฅผ ์ด์ฉํด ์นด๋๋ฅผ ๊ฐ๋ก๋ก ๋์ดํ๊ณ ์ค๋ฐ๊ฟ(wrap)์ ํ์ฉํฉ๋๋ค. */
.cards {
display: flex;
justify-content: center;
flex-wrap: wrap; /* ํ๋ฉด์ด ์ข์์ง๋ฉด ๋ค์ ์ค๋ก ๋์ด๊ฐ๋๋ค. */
gap: 20px;
}
/* [์นด๋ ์คํ์ผ] ๊ฐ ์นด๋์ ํฌ๊ธฐ์ ํ ๋๋ฆฌ, ๊ทธ๋ฆผ์(box-shadow)๋ฅผ ์ง์ ํฉ๋๋ค. */
.card {
width: 240px;
padding: 24px;
background: white;
border: 1px solid #e4e4e4;
border-radius: 8px;
box-shadow: 0 2px 4px #e4e4e4;
}
/* [์ ํ์ ์ฐ์ต - ํ์ ์ ํ์] .relation ๋ด๋ถ์ ๋ชจ๋ p ํ๊ทธ ์ ์ฉ */
.relation p {
color: purple;
}
/* [์ ํ์ ์ฐ์ต - ์์ ์ ํ์] .relation ๋ฐ๋ก ์๋์ span ํ๊ทธ๋ง ์ ์ฉ */
.relation > span {
color: orange;
font-weight: bold;
}
/* [์ ํ์ ์ฐ์ต - ID ์ ํ์] ํน์ ID๋ฅผ ๊ฐ์ง ์์๋ง ์ ์ฉ */
#special {
background: #fff3cd;
padding: 12px;
}
/* [๋ฏธ๋์ด ์ฟผ๋ฆฌ - ๋ฐ์ํ] ๊ฐ๋กํญ 768px ์ดํ์์ ๋ ์ด์์์ ์ธ๋ก๋ก ๋ณ๊ฒฝํฉ๋๋ค. */
@media (max-width: 768px) {
.cards {
flex-direction: column; /* ์ธ๋ก ์ ๋ ฌ */
align-items: center;
}
.menu {
gap: 10px;
}
}
</style>
</head>
<body>
<nav class="navbar">...</nav>
<header class="hero">...</header>
<section>ํ๋กํ...</section>
<section>๊ธฐ์ ์คํ...</section>
<section>์ ํ์ ์ฐ์ต...</section>
</body>
</html>
'๊ฐ๋ฐ์ ํธ์์ธ > Front' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [JavaScript] 3. ํ๋ณํ (4) | 2026.06.24 |
|---|---|
| CSS ์ฝ๋์ ์น์ฌ์ดํธ์ ๊ตฌ์กฐ (0) | 2026.06.24 |
| [CSS] "์์๋ ์ด๋ ต๊ณ ๋ฐฐ์๋ ์ฝ๋ค" ๋ ๋ฌด์จ ๋ป์ผ๊น? / Relation ์ดํดํ๊ธฐ (0) | 2026.06.22 |
| [Web Front]์น ๊ตฌ์กฐ์ ์๊ฐ์ ํํ์ ์ ํ๋ ์ธ์ด CSS (0) | 2026.06.22 |
| [Web Front 2] HTML ๊ธฐ์ด (0) | 2026.06.18 |
