CSS (Cascading Style Sheets)는 웹 페이지의 스타일과 레이아웃을 정의하는 언어로, HTML의 구조에 디자인을 입혀서 웹 페이지를 시각적으로 꾸밀 수 있게 합니다. HTML이 페이지의 구조를 결정한다면, CSS는 그 구조를 어떻게 보여줄지 결정하는 역할을 합니다.
CSS는 선택자(Selector)와 선언(Declaration)으로 구성됩니다. 선택자는 스타일을 적용할 HTML 요소를 지정하고, 선언은 그 요소에 적용할 스타일을 정의합니다.
선택자 {
속성1: 값1;
속성2: 값2;
}
h1
태그, 클래스명 .class-name
, 아이디 #id-name
등이 있습니다.color
), 글꼴(font-size
), 여백(margin
), 크기(width, height
) 등이 있습니다.CSS는 HTML에 세 가지 방법으로 적용할 수 있습니다.
HTML 태그 내에 style
속성을 사용하여 적용합니다.
한 번만 적용되는 스타일에 적합하며, 반복해서 사용하기에는 불편합니다.
<p style="color: blue; font-size: 14px;">인라인 스타일 적용 예제</p>
<head>
태그 안에 <style>
태그로 작성합니다. <style>
p {
color: green;
font-size: 16px;
}
</style>
별도의 .css
파일에 스타일을 작성하고, HTML 문서에서 <link>
태그로 불러옵니다.
여러 HTML 문서에 동일한 스타일을 적용할 수 있어 유지보수에 용이합니다.
<link rel="stylesheet" href="styles.css">
CSS 선택자는 스타일을 적용할 요소를 선택하는 방법입니다. 다양한 선택자를 통해 세밀하게 스타일을 지정할 수 있습니다.
p
, h1
, div
.
을 붙여 특정 클래스에 스타일을 적용합니다. 예: .class-name
#
을 붙여 특정 아이디에 스타일을 적용합니다 예: #id-name
input[type="text"] { ... }
div p { ... }
ul > li { ... }
h1, h2, h3 { ... }
CSS 박스 모델(Box Model)은 웹 페이지에서 HTML 요소가 차지하는 영역을 이해하는 데 필수적인 개념입니다. 각 요소는 콘텐츠, 패딩(padding), 테두리(border), 여백(margin)으로 구성된 사각형 상자입니다.
.box {
width: 200px;
padding: 10px;
border: 2px solid black;
margin: 15px;
}
CSS는 다양한 레이아웃 방식으로 요소를 배치할 수 있습니다.
.container {
display: flex;
justify-content: space-between;
align-items: center;
}
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
gap: 10px;
}
position
속성을 사용하여 요소의 위치를 고정하거나 상대적으로 이동시킬 수 있습니다.static
: 기본 위치relative
: 자신의 위치에서 이동absolute
: 부모 요소를 기준으로 이동fixed
: 뷰포트를 기준으로 고정sticky
: 스크롤에 따라 상대적 위치에서 고정* **색상 이름**: `color: red;`
* **HEX 코드**: `color: #ff0000;`
* **RGB, RGBA**: `color: rgb(255, 0, 0);` 또는 `rgba(255, 0, 0, 0.5);`
* **HSL, HSLA**: `color: hsl(0, 100%, 50%);`
font-family
: 글꼴을 설정합니다. 여러 글꼴을 지정하여, 브라우저가 첫 번째 사용 가능한 글꼴을 사용하게 합니다.font-size
: 글꼴 크기를 설정합니다.font-weight
: 글꼴 두께를 설정합니다.line-height
: 줄 높이를 설정하여 가독성을 높일 수 있습니다. p {
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
line-height: 1.5;
}
.button {
background-color: blue;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: green;
}
@keyframes
규칙을 통해 애니메이션 단계를 정의합니다. @keyframes slide {
from { transform: translateX(0); }
to { transform: translateX(100px); }
}
.box {
animation: slide 1s ease-in-out;
}
CSS에 대해 더 깊이 배우고 싶다면 다음 자료를 참고해 보세요.
1. MDN 웹 문서 - CSS 기본
생활코딩 - CSS 강의
CSS 트릭스 (CSS-Tricks)