2025. 1. 23. 15:18ใStyle/CSS

๋ชฉ์ฐจ
1. CSS๋?
2. CSS ์์ฑ ๋ฐฉ๋ฒ
3. ์ ํ์
4. ์์
5. ์ ๊ทผ์ฑ
1. CSS๋?
Cascading Style Sheets์ ์ฝ์๋ก, ์นํ์ด์ง์ ์คํ์ผ์ ์ ์ํ๋ ์ธ์ด์ด๋ค.
HTML๋ก ๊ตฌ์กฐ/๋ด์ฉ์ ์์ฑํ๊ณ , CSS๋ก ๋์์ธ(์์, ํฐํธ, ๋ ์ด์์ ๋ฑ)์ ์์ฑํ๋ค.
CSS์ ํต์ฌ ๊ฐ๋
- Cascading : ์ฌ๋ฌ ์คํ์ผ์ด ๊ฒน์น ๋, ์ฐ์ ์์ ๊ท์น์ ๋ฐ๋ผ ์ ์ฉ
- Selector : ์ด๋ค HTML ์์์ ์คํ์ผ์ ์ ์ฉํ ์ง ์ง์ ํ๋ ๋ฌธ๋ฒ
- Property & Value : ์คํ์ผ์ ์์ฑ๊ณผ ์์ฑ๊ฐ
CSS ์ฌ์ฉ ๋ฐฉ์
- ์ธ๋ผ์ธ : html ๋ฌธ์์์ ์ฝ๋ ๋ด์ ์ง์ ์์ฑํ๋ ๋ฐฉ์์ด๋ค.
<p style="color: red;"> - ๋ด๋ถ ์คํ์ผ : html ๋ฌธ์์์ <style> ํ๊ทธ๋ฅผ ์์ฑํ์ฌ ๋ฐ๋ก ๋ชจ์ ์์ฑํ๋ ๋ฐฉ์์ด๋ค.
<style>
color: "red";
...
</style> - ์ธ๋ถ ์คํ์ผ ์ํธ : .css ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์์ฑํ๊ณ , html ๋ฌธ์์๋ <link>๋ก ์ฐ๊ฒฐํ๋ค.
<link rel="stylesheet" href="style.css">
2. CSS ์์ฑ ๋ฐฉ๋ฒ
์์์ CSS ์ฌ์ฉ ๋ฐฉ์์ผ๋ก ์ธ๋ผ์ธ, ๋ด๋ถ ์คํ์ผ, ์ธ๋ถ ์คํ์ผ ์ํธ๋ก ์ด ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ธ๊ธํ๋๋ฐ,
๊ทธ ์ค ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ธ๋ถ ์คํ์ผ ์ํธ์ ์์ฑ ๋ฐฉ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์์๋ณด์.
css๋ฅผ ์์ฑํ๋ ๋ฐ์๋ ์ธ ๊ฐ์ง ์์๋ฅผ ์ฌ์ฉํ๋ค.
- h1 : ์ ํ์(์คํ์ผ์ ์ ์ฉํ ๋์์ ๊ฐ๋ฆฌํด)
- color : ์์ฑ(์ด๋ค ์์ฑ์ ์คํ์ผ์ ์ ์ํ ๊ฒ์ด๋)
- #aaddcc : ์์ฑ๊ฐ(์ด๋ป๊ฒ ๋ฐ๊ฟ์ง)
// style.css
h1 {
color: #aaddcc;
}
//index.html
...
<link rel="stylesheet" hrel="style.css>
...
<h1> Hello Word! </h1>
3. ์ ํ์
๊ท์น์ ์ด๋ค ์์์ ์ ์ฉํ ๊ฒ์ธ์ง ์ ํํ๋ ๋ถ๋ถ์ด๋ค.
์ ํ์ {
์์ฑ: ๊ฐ;
์์ฑ: ๊ฐ;
}
์์ธํ ๋ด์ฉ์ ๋ฐ๋ก ์ ๋ฆฌํ๋ค.
https://ldd6cr-adness.tistory.com/334
CSS : CSS ์ ํ์ (CSS Selector)
๋ชฉ์ฐจ1. CSS ์ ํ์(CSS Selector) 1-1. ์ ํ์ ์ข ๋ฅ 1-2. ์์ฑ ์ ํ์ 1-3. ์ฌ๋ฌ ์ ํ์์ ๊ฐ์ ๊ท์น ์ ์ฉํ๊ธฐ 1-4. ์ฌ๋ฌ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ์ ํํ๊ธฐ2. ์์ ๊ฒฐํฉ์ (Child Combinator)3. ์์ ๊ฒฐํฉ์ (Descendant
ldd6cr-adness.tistory.com
4. ์์
CSS ํ๋กํผํฐ ์ค์๋ ์์ ์์์ ์ ์ฉ๋๋ฉด, ์์ ์์๊น์ง ์์๋๋ ๊ฒ๋ค์ด ์๋ค.
โญ ์์๋๋ ๋ํ ์์ฑ๋ค
- color
- font, font-size, font-family
- letter-spacing, line-height
- text-align, visibility
<div style="font-size: 20px;">
parent
<!-- child์ font-size๋ 20px๋ก ๋
ธ์ถ ๋จ -->
<p>child</p>
</div>
โ ์์๋์ง ์๋ ์์ฑ๋ค
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ค ๋ชจ๋ธ์ด๋ ๋ ์ด์์ ๊ด๋ จ ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ค.
- width, height
- margin, padding
- border
- display, position
<div style="border: 1px solid #ccc">
parent
<!-- child๋ border๊ฐ ์ ์ฉ๋์ง ์์ -->
<p>child</p>
</div>
๋ถ๋ชจ ์์์ ํ๋กํผํฐ๋ฅผ ๊ผญ ์์๋ฐ๊ณ ์ถ๋ค๋ฉด inherit ๊ฐ์ ์ง์ ํ ์ ์๋ค.
<div style="font-size: 20px">
parent
<!-- ์๋ ์์์ ๋ฐ์ง ์๋ button ๋ด๋ถ ํฐํธ๋ 20px๋ฅผ ์์๋ฐ์ -->
<button style="font-style: ingerit">child</button>
</div>
6. ์ ๊ทผ์ฑ
์น ์ ๊ทผ์ฑ์ ๋ชจ๋ ์ ์ฒด์ , ํ๊ฒฝ์ ํ๊ณ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ๋ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
W3C์์ ์ค๋ฆฝํ WAI(Web Accessibility Initiative)์์ ์ ๋ฌธ์ ์ผ๋ก ์ฐ๊ตฌํ๋ฉฐ ์น ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ์ ์ ๊ณตํ๋ค.
โ ์์ด, ์ฝ์ด ์ฌ์ฉ์ ์ง์ํ๊ธฐ
์ฌ์ฉ์๊ฐ ์๋ฏธ๋ฅผ ์ ํํ ์ดํดํ๊ธฐ ์ด๋ ต๊ฑฐ๋, ๋ณด์กฐ๊ธฐ๊ธฐ(์คํฌ๋ฆฐ ๋ฆฌ๋ ๋ฑ)๊ฐ ์ ๋๋ก ์ฝ์ง ๋ชปํ ์ ์์ผ๋ฏ๋ก
์ฝ์ด(AI, CSS ๋ฑ)์ ์์ด๋ ๊ฐ๋ฅํ ํ์ด์ ์์ฑํ๊ฑฐ๋, <abbr> ํ๊ทธ๋ก ์ ์ฒด ์๋ฏธ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
<abbr title="Artificial Intelligence">AI</abbr>
โ ์ฝํ ์ธ ์ ์ ๋ชฉ๊ณผ ๋จ๋ฝ์ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ๊ธฐ
๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑํ๋ฉด, ์๊ฐ์ฅ์ ์ธ ์ฌ์ฉ์๋ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ก ์ ๋ชฉ(h1~h6)๊ณผ ๋ณธ๋ฌธ์ ๊ตฌ๋ถํด ์ฝ๊ฒ ํ์ํ ์ ์๋ค.
๋ํ ์ ์ ํ ์ค๋ฐ๊ฟ๊ณผ ๋จ๋ฝ ๊ตฌ๋ถ์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ , ์ ๋ณด ์ ๋ฌ๋ ฅ์ ํฅ์์ํจ๋ค.
โ ํค๋ณด๋ ๋์ ์ ๊ณตํ๊ธฐ
<div>์ css์ ๋ฌด๋ถ๋ณํ ์ฌ์ฉ ์ง์
html์ <button>, <input>๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , <div>์ css๋ก ๋ชจ์๋ง ํ๋ด๋ธ๋ค๋ฉด,
๊ธฐ๋ณธ ์์๋ค์ด ์ ๊ณตํ๋ ํค๋ณด๋ ๋์(์ํฐ ํค์ ํญ ํค๋ก ์ด๋ํ๋ ์ํธ์์ฉ)์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์์ง๋ค.
๋ฐ๋์ <div>๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ ์ถ๊ฐ์ ์ธ html ์์ฑ์ ์์ฑํด์ผํ๋ค.
- role : ํด๋น ์์์ ์๋ ๋ชฉ์ ์ ์์ฑ (role=button)
- tab-index : ํด๋น ์์๋ฅผ ํญ ํค๋ก ๋๋ฌํ๊ฒ ํ๋ ์์ฑ์ผ๋ก, ํญ ํค๋ก ์ด๋ํ ๋ค์ ์์น๋ฅผ ์ง์
- ํค๋ณด๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ถ๊ฐ : ๋ฒํผ ๋์์ด ์ํฐ/์คํ์ด์ค๋ก ๋์ํ๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์์ฑ
Focus ์ง์ ์ ๋ช ํํ๊ฒ
์ด๋ ํ ํญ๋ชฉ์ Focus๊ฐ ๋๋ค๋ฉด, ํด๋น ์์์ ์ค๊ณฝ์ ์ ์ฃผ์ด์ผ ๋ง์ฐ์ค ์์ด ํค๋ณด๋๋ก ์ด์ฉํ๋ ์ฌ๋๋ค์๊ฒ ํฌ์ปค์ค ์ง์ ์ ๋ช ์ํ ์ ์๋ค.
๋ฉํฐ๋ฏธ๋์ด ์์์ ์ ๊ทผ์ฑ ๋ถ์ฌํ๊ธฐ
์คํฌ๋ฆฐ ๋ฆฌ๋๋ ์ด๋ฏธ์ง, ๋์์, ์ค๋์ค์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ src, alt์ ๊ฐ์ ์์ฑ์ ๋ถ์ฌํ์ฌ ํด๋น ์์์ ๋ํ ์ค๋ช ์ ์ฃผ์ด์ผ ํ๋ค.
์๋ฏธ๊ฐ ์๋ค๋ฉด ๋น ๋ฌธ์์ด์ ์ง์ ํ ์๋ ์๋ค.
** ์ต๊ทผ์ ๋ง์ด ์ฌ์ฉํ๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์์๋ ์น ์ ๊ทผ์ฑ์ ์ด๋ป๊ฒ ์ถ๊ตฌํ๋์ง ๋ฌธ์๋ฅผ ์ ๊ณตํ๋ค.
Angular : https://v17.angular.io/guide/accessibility
React : https://legacy.reactjs.org/docs/accessibility.html
flex๋ฅผ ์ด์ฉํ ๋ ์ด์์
์ ์ฐํ ๋ ์ด์์์ ์ํด flex์ grid ๋ ์ด์์ ๋ฐฉ์์ด ๋ง์ด ์ฌ์ฉ๋๋ค.
flex๋ ๋๋ฐ์ด์ค/๋์คํ๋ ์ด์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ปจํ ์ด๋์ ๋ค์ด์๋ ์ปจํ ์ธ ์ ๋๋น, ๋์ด, ์์๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ปจํ ์ด๋ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฑ์ด๋ค.
flex container์ flex items
display ํ๋กํผํฐ์์ flex(inline-flex)๋ฅผ ๊ฐ์ง๋ ์์๋ฅผ flex container๋ผ๊ณ ํ๋ค.
flex container ์์ ์๋ ์์ ์์๋ค์ flex items์ด๋ค.
flex items๋ flex-flow,flex-direction์ ๊ธฐ์ค์ผ๋ก ๋ฐฐ์น๋๋ค.

flex container
์ด๋ค html ์์์ display ํ๋กํผํฐ๋ก flex๋ inline-flex๋ฅผ ์ง์ ํ๋ฉด ํด๋น ์์๋ flex container๊ฐ ๋๋ค.
๋ํ flex container์ ๋ช ๊ฐ์ง flex ํ๋กํผํฐ๋ฅผ ์ฃผ์ด ์์ ์์์ ๋ ์ด์์์ ๋ณ๊ฒฝ์ํฌ ์ ์๋ค.
flex-direction : main-axis์ ๋ฐฉํฅ ์ง์ (์์ดํ ๋ฐฐ์น ๋ฐฉํฅ์ ์ํ, ์์ง ์ง์ )
flex-wrap : ๊ฐํ ์ฌ๋ถ ์ง์
justify-content : main-axis์ ์์ดํ ์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ๊ฒ์ธ์ง ๊ฒฐ์ (์์ผ๋ก ์ ๋ ฌ, ๊ฐ์ด๋ฐ ์ ๋ ฌ, ์์ ์ฌ์ด์ ์ผ์ ํ๊ฒ ๊ณต๊ฐ ๋ถ๋ฐฐ ๋ฑ๋ฑ..)
** justify-content ํ๋กํผํฐ๋ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์ง์ํ๋ ๊ฐ์ด ์ ํ๋๋ฏ๋ก, ๋ฏธ๋ฆฌ ํ์ธ ํ ์ฌ์ฉํด์ผํ๋ค.
align-items : cross axis์ ๋ํด item์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ์ง ๊ฒฐ์
align-content : cross axis์ item ๊ฐ ๊ณต๊ฐ์ด ์์ ๋ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ๋ถ๋ฐฐํ ์ง ๊ฒฐ์
.container {
display: flex | ininline-flex;
}
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
.container {
flex-wrap: nowrap | wrap | wrap-reverse;
}
.container {
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
| start | end | left | right... + safe | unsafe;
}
.container {
align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline
| start | end | self-start | self-end +... safe | unsafe;
}
.container {
align-content: flex-start | flex-end | center | space-between | space-around | space-evenly |
stretch | start | end | baseline | first baseline | last baseline+... safe | unsafe;
}
flex items
๋ถ๋ชจ ์์๊ฐ flex container์ผ ๋ ์์ ์์๋ค์ ์๋์ผ๋ก flex items์ด ๋๋ค.
order : flex items์ ๋ฐฐ์น ์์๋ฅผ ์ง์ ํ๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ด๊ณ , ์์ ์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
button-1 {
order: 5;
}
button-2 {
order: 1;
}
flex-grow : item์ด ์ฐจ์งํ๋ ๋น์จ์ ๋ํ๋ธ๋ค. ์์๋ง ๊ฐ๋ฅํ๋ฉฐ, ํด๋น ํ๋กํผํฐ๋ฅผ ๊ฐ์ง ์์๋ค๊ณผ ๊ท ๋ฑ ๋ถ๋ฐฐํ๋ค.
align-self : flex container์์ ์ ์๋ align-items์ ํ๋กํผํฐ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ฉฐ, ๊ฐ๊ณผ ๋์์ align-items์ ๋์ผํ๋ค.
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
๋ฏธ๋์ด ์ฟผ๋ฆฌ
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋ฏธ๋์ด ํ์ ๊ณผ ๋ฏธ๋์ด ๊ธฐ๋ฅ์ ๊ธฐ์ค์ผ๋ก ๋์ํ๋ค.
๋ฏธ๋์ด ํ์ : ๋ชจ๋ ์ฅ์น(all), ์ธ์ ๋ฏธ๋์ด(print), ํ๋ฉด(screen) ๋ฑ
@media screen {
...
}
๋ฏธ๋์ด ๊ธฐ๋ฅ : width, height ๋ฑ ์ฅ์น์ ํ๊ฒฝ ๋ฐ ํน์ฑ
@media (min-width: 700px) {
...
}
or
@media (width >= 700px) {
... /* ์ง๊ด์ ์ด๋, ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ง๋ค. */
}
or
@media (min-width: 700px) and (orientation: landscape) {
... /* , and, not, only ๋ฑ์ ์ฐ์ฐ์๋ก ์ด์ด์ ์์ฑํ ์ ์๋ค. */
}
์ฐธ๊ณ
'Style > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| CSS : display์ float (0) | 2025.07.28 |
|---|---|
| CSS : ๋ฐ์ค ๋ชจ๋ธ (Box Model) (1) | 2025.07.28 |
| CSS : ํ ์คํธ ์คํ์ผ๋ง ์์ฑ๋ค (3) | 2025.07.28 |
| CSS ๋จ์ ์ด์ ๋ฆฌ : ์์, ํฌ๊ธฐ, ์๊ฐ, ๊ฐ๋ (5) | 2025.07.28 |
| CSS : absolute position (0) | 2025.02.15 |
GitHub