누에나방애벌레
웹 개발 기초 2 : CSS 본문
CSS(Cascading Style Sheets)는 웹 페이지의 스타일과 레이아웃을 정의하는 핵심 언어입니다. HTML과 함께 사용되어 웹 페이지를 시각적으로 매력적이고 기능적으로 만드는데 중요한 역할을 합니다. 이번 포스트에서는 CSS의 기본 속성과 다양한 기능, 사용 방법에 대해 자세히 다루겠습니다.
CSS 기본 구조와 문법
- CSS 기본 구조:
- CSS는 스타일 규칙을 정의하는데, 각 규칙은 선택자(selector)와 선언부(declaration block)로 구성됩니다.
selector { property: value; }
- 예시:
p { color: blue; font-size: 16px; }
- CSS 적용 위치:
- Inline CSS: HTML 태그에 직접 스타일을 적용합니다.
<p style="color: red;">이것은 빨간색 텍스트입니다.</p>
- Internal CSS: <head> 섹션 내의 <style> 태그에 스타일을 정의합니다.
<style> p { color: green; } </style>
- External CSS: 외부 CSS 파일을 링크하여 스타일을 적용합니다. <head> 섹션 내에 <link> 태그를 사용합니다.
<link rel="stylesheet" href="styles.css">
- Inline CSS: HTML 태그에 직접 스타일을 적용합니다.
CSS 레이아웃과 위치 지정
- 박스 모델(Box Model):
- CSS 박스 모델은 모든 HTML 요소를 사각형 상자로 간주합니다. 이 상자는 margin, border, padding, content 영역으로 구성됩니다.
- margin: 요소와 다른 요소 사이의 외부 여백입니다.
- border: 요소의 테두리입니다.
- padding: 요소의 내부 여백입니다.
- content: 실제 내용이 위치하는 영역입니다.
- CSS 박스 모델은 모든 HTML 요소를 사각형 상자로 간주합니다. 이 상자는 margin, border, padding, content 영역으로 구성됩니다.
- 위치 지정(Positioning):
- Static: 기본값으로, 요소는 문서의 흐름에 따라 위치합니다.
- Relative: 요소는 자신의 원래 위치를 기준으로 이동합니다.
.relative { position: relative; top: 10px; left: 20px; }
- Absolute: 요소는 가장 가까운 위치 지정 조상 요소를 기준으로 이동합니다. 조상이 없으면 <body>를 기준으로 합니다.
.absolute { position: absolute; top: 10px; left: 20px; }
- Fixed: 요소는 화면을 기준으로 고정되며, 스크롤을 해도 위치가 변하지 않습니다.
.fixed { position: fixed; bottom: 10px; right: 10px; }
- Sticky: 스크롤 위치에 따라 요소가 고정되거나 문서 흐름에 따라 이동합니다.
.sticky { position: sticky; top: 0; }
- Flexbox:
- Flexbox는 레이아웃을 정렬하는 데 강력한 도구입니다. 주 축(main axis)과 교차 축(cross axis)을 기반으로 자식 요소를 정렬합니다.
- 주 축 방향 설정: flex-direction을 사용하여 정렬 방향을 설정합니다.
.container { display: flex; flex-direction: row; /* 또는 column */ }
- 정렬 설정:
- align-items: 교차 축에서 정렬을 설정합니다.
.container { display: flex; align-items: center; /* center, flex-start, flex-end 등 */ }
- justify-content: 주 축에서 정렬을 설정합니다.
.container { display: flex; justify-content: space-between; /* center, flex-start, flex-end, space-around 등 */ }
- Wrap: 자식 요소가 컨테이너의 경계를 넘을 때 자동으로 줄바꿈을 하도록 설정합니다.
.container { display: flex; flex-wrap: wrap; }
- align-items: 교차 축에서 정렬을 설정합니다.
- 주 축 방향 설정: flex-direction을 사용하여 정렬 방향을 설정합니다.
- Flexbox는 레이아웃을 정렬하는 데 강력한 도구입니다. 주 축(main axis)과 교차 축(cross axis)을 기반으로 자식 요소를 정렬합니다.
- Grid:
- Grid Layout은 2차원 레이아웃 시스템으로, 행과 열을 기반으로 요소를 배치합니다.
- 기본 사용:
.grid-container { display: grid; grid-template-columns: 1fr 1fr 1fr; /* 3열 */ grid-template-rows: auto; /* 자동 높이 */ gap: 10px; /* 간격 */ } .grid-item { border: 1px solid black; }
- 기본 사용:
- Grid Layout은 2차원 레이아웃 시스템으로, 행과 열을 기반으로 요소를 배치합니다.
배경 이미지와 스타일링
- 배경 이미지:
- 이미지 추가:
.background { background-image: url('image.jpg'); background-repeat: no-repeat; /* 반복 방지 */ background-size: cover; /* 이미지 크기 조절 */ background-position: center; /* 중앙 정렬 */ }
- 이미지 추가:
- 박스 그림자:
- 그림자 추가:
.box { box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5); /* 수평 거리, 수직 거리, 흐림 반경, 확산 거리, 색상 */ }
- 그림자 추가:
CSS 선택자와 속성
- 선택자:
- 태그 선택자: 특정 태그를 선택합니다.
p { color: blue; }
- 클래스 선택자: 클래스 이름을 사용하여 선택합니다.
.class-name { font-size: 20px; }
- ID 선택자: ID를 사용하여 선택합니다.
#unique-id { margin: 10px; }
- 전체 선택자: 문서의 모든 요소를 선택합니다.
* { box-sizing: border-box; }
- 태그 선택자: 특정 태그를 선택합니다.
- 폰트 크기:
- 단위:
- px: 픽셀 단위로 절대 크기를 지정합니다.
- %: 부모 요소에 대한 비율로 크기를 지정합니다.
- rem: 루트 요소의 폰트 크기를 기준으로 크기를 지정합니다. 반응형 디자인에 유용합니다.
body { font-size: 16px; } p { font-size: 1.5rem; /* 24px */ }
- 단위:
- 디스플레이 속성:
- block: 줄바꿈을 하며, 전체 너비를 차지합니다.
div { display: block; }
- inline: 줄바꿈 없이 나란히 배치되며, 너비와 높이 속성은 적용되지 않습니다.
span { display: inline; }
- inline-block: 줄바꿈 없이 나란히 배치되며, 너비와 높이 속성이 적용됩니다.
.inline-block { display: inline-block; width: 100px; height: 50px; }
- none: 요소를 화면에서 숨깁니다.
.hidden { display: none; }
- block: 줄바꿈을 하며, 전체 너비를 차지합니다.
'공부 > web' 카테고리의 다른 글
HTTP & RESTful API (0) | 2024.08.14 |
---|---|
DOM 제어 및 이벤트 처리 (0) | 2024.07.26 |
웹 개발 기초 3 : JavaScript (2) (0) | 2024.07.20 |
웹 개발 기초 3 : JavaScript (1) (0) | 2024.07.20 |
웹 개발 기초 1 : HTML (0) | 2024.07.20 |