1 . flexbox
flexbox
- CSS에서 요소들을 한 방향(가로 또는 세로)으로 유연하게 배치하고 정렬하기 위한 레이아웃 모델
- 부모 요소에 display: flex를 적용해 자식 요소들의 크기, 정렬, 간격을 쉽게 제어할 수 있음
컨테이너
- flexbox에서 display:flex가 적용된 부모 요소를 의미
- 내부에 있는 자식 요소들을 어떻게 배치하고 정렬할지에 대한 기준과 규칙을 정하는 역할
아이템
- flex 컨테이너 안에 포함된 자식 요소들을 의미
- 컨테이너가 정한 배치 규칙에 따라 실제로 화면에 놓이는 대상
flex-direction
- 아이템이 배치되는 방향 결정
- flex-direction: row; => 기본값, 가로
- flex-direction: column; => 세로
justify-content
- 가로 또는 세로 방향 정렬
- justify-content: flex-start; => 기본값, 왼쪽 또는 위으로 부터 정렬
- justify-content: center; =>가운데
- justify-content: space-between; => 양 끝 요소를 끝에 붙이고 사이 간격만 동일하게 배치
- justify-content: space-around; => 요소 주변에 동일한 여백을 줌
align-items
- 주축과 수직 방향 정렬
- align-items: stretch; => 기본값, 위로부터 정렬, 자식의 height가 없을 때 동작(부모 크기에 맞춰 확장)
- align-items: center; => 가운데
- align-items: flex-end; => 아래로 정렬
flex-wrap
- 줄바꿈 처리
- flex-wrap: nowrap; => 기본값, 줄바꿈 하지 않음
- flex-wrap: wrap; => 줄바꿈
align-content
- 여러 줄 정렬
- align-content: center;
- align-content: space-between;
gap
- 아이템 간 간격
- gap: 20px;
flex-grow
- 남는 공간을 얼마나 차지할지 결정
- flex-grow: 1;
flex-shrink
- 공간 부족 시 줄어드는 정도
- flex-shrink: 1;
flex-basis
- 아이템의 시작 크기
- flex-basis: 200px;
flex
- 축약 속성
- flex 1 1 200px; => flex-grow, flex-shrink, flex-basis를 순서대로 작성
align-self
- 특정 아이템만 정렬 다르게 적용
- align-self: center;
2 . gridbox
Gridbox
- CSS에서 요소를 행과 열을 기준으로 배치하는 2차원 레이아수 시스템
- display: grid;
- align-* : 세로(수직)
- justify-* : 가로(수평)
- *-items : 모든 아이템의 기본 정렬(컨테이너에 설정)
- *-self : 특정 아이템 1개만 설정
grid-template-columns
- 열의 개수와 크기를 설정
- grid-template-columns: 1fr 2fr 1fr /* 값을 공백으로 나열한 개수 = 열 개수 */
grid-template-rows
- 행의 개수와 크기 설정
- grid-template-rows: auto 200px;
grid-template-areas
- grid를 "좌표/라인 번호"가 아니라 "이름(영역)"으로 설계하게 해주는 속성
- grid-template-areas:
"header header" /* 큰따옴표 한 줄 = 한 행 */
"nav main" /* 따옴표 안의 토큰 개수 = 열 */
"footer footer";
/* "header header" 2칸(2열)이며 둘 다 header라서 가로로 2칸이 합쳐진 형태 */
gap
- gap: 20px;
- row-gap, column-gap
- row-gap: 20px;
- column-gap: 20px;
justify-items
- justify-items: center; /* 각 셀의 가로 중앙에 위치 */
- justify-items: row-gap; /* 행과 행 사이 간격을 동일 */
- justify-items: stretch; /* 아이템이 각 칸의 가로폭을 꽉 채우도록 늘림 */
- justify-items: start; /* 각 셀의 왼쪽에 붙음 */
- justify-items: end; /* 각 셀의 오른쪽에 붙음 *
- grid 컨테이너에서 각 grid 셀 안에서 아이템을 가로 방향으로 어떻게 정렬할지를 정하는 속성
align-items
- 행 방향 정렬
place-items
- place-items: center
- place-items = align-items(세로) + justify-items(가로)
- 세로/가로 정렬을 한 번에 설정
아이템 사용하는 속성
grid-column
- grid 아이템이 가로 방향으로 어디서 시작해서 어디까지 차지할지를 정하는 속성
- grid-column: 1 / 3;
- 1번에서 시작, 3번 전까지 차지(1열 + 2열 > 2칸 차지)
grid-row
- grid 아이템이 세로 방향으로 어디서 시작해서 어디까지 차지할지를 정하는 속성
- 작성 방법은 grid-column과 동일
grid-area
- grid-area: header;
- 영역 이름을 지정(grid-template-areas와 세트)
justify-self
- justify-self: center;
- grid 아이템 한 개를 셀 안에서 가로 방향으로 어떻게 정렬할지 정하는 속성
align-self
- gid 아이템 한 개를 셀 안에서 세로 방향으로 어떻게 정렬할지 정하는 속성
place-self
- place-self: center;
- grid 아이템 한 개의 정렬을 align-self + justify-self 정하는 속성
반응형 그리드
- fr: 남는 공간을 비율로 나누는 단위( 1fr 2fr)
- 동일한 크기로 늘어나고 줄어듦
repeat()
- repeat(3, 1fr) -> 1fr 1fr 1fr과 동일
- 반복 정의
minmax()
- 트랙(열/행)의 크기를 최소 ~ 최대 범위로 지정하는 함수
- minmax(200px, 1fr) -> 1열은 최소 200px, 공간이 남으면 최대 1fr까지 늘어남
auto-fit / auto-fill
- repeat()에서 열(또는 행) 개수를 자동으로 만들 때 쓰는 키워드
- repeat(auto-fit, minmax(200px, 1fr))
- 컨테이너 폭을 보고 minmax(200px, 1fr)짜리 열이 한 줄에 몇 개 들어갈 수 있는 지 계산, 그 개수만큼 열을 반복해서 생성
- auto-fit: 남는 빈 칸이 생기면 그 칸을 없애서 아이템들이 더 넓게 늘어나게 함
- auto-fill: 가능한 만큼 열(칸)을 끝까지 채워서 만들어 둠
3 . 반응형
반응형
- 웹이나 앱 화면이 사용자의 기기 환경에 맞춰 화면 크기, 해상도, 방향(가로, 세로) 등에 따라 레이아웃과 요소 배치가 자동으로 변화하도록 설계하는 사고방식을 의미
미디어 쿼리
- CSS에서 화면의 너비, 높이, 해상도, 기기 방향 같은 조건에 따라 서로 다른 스타일을 적용할 수 있게 해주는 기능
- @media (조건) {
조건을 만족할 때 적용되는 CSS
}
브레이크 포인트
- 반응형 웹에서 화면 크기에 따라 레이아웃이나 스타일이 바뀌는 기준을 의미
- 주로 미디어 쿼리에서 min-width나 max-width 값으로 설정되며, 이 지점을 기준으로 요소의 배치, 크기, 정렬 방식이 달라져 모바일/태블릿/데스크탑 등 각 기기에 맞는 화면 구성을 만들 수 있음
- 480px 이하: 모바일
- 768px 이하: 태블릿
- 1024px 이상: 데스크탑
- 1200px 이상: 와이드 데스크탑
max-width(이하)
- @media (max-width: 768px){ ... }
768px 이하로 작아지면 적용
min-width(이상)
- @media (min-width: 1024px) { ... }
1024px 이상으로 커지면 적용
AND
- @media (min-width: 768px) and (max-width: 1023px){ ... }
- 768px ~ 1023px 사이에만
OR
- @media (max-width: 480px) and (min-width: 1200px){ ... }
- 480px 이하 또는 1200px 이상
4 . CSS 변수
변수
- 자주 사용하는 스타일 값을 이름으로 정의해 두고 필요할 때마다 재사용할 수 있게 해주는 기능
- --변수이름 형태로 선언하고 var() 함수로 불러옴
- 전역 변수로 사용
- :root {
--main-color: #3498db;
--font-size-base: 15px;
--spacing: 20px;
}
- body {
background-color: var(--main-color);
font-size: var(--font-size-base);
}
css 변수에 기본값 지정
- color: var(--sub-color, black);
범위별 변수
- .card {
--card-padding: 12px;
padding: var(--card-padding);
}
5 . CSS 우선 순위
차례대로
1. !important
2. 인라인 스타일 (HTML 내부 style 속성)
3. ID 선택자 (#)
4. 클래스 선택자 (.), 의사 클래스(:), 속성 선택자([])
5. 태그 선택자
=> 같은 우선 순위일 때는 마지막에 적은 것이 적용됨
6 . transition
transition
- 요소의 상태가 변경될 때(hover, 클래스 변경 등) 스타일 값이 즉시 바뀌지 않고 일정 시간에 걸쳐 부드럽게 변화하도록 만드는 기능
- 선택자 { transition: 속성 시간; }
transition-property: width, background-color;
- 어떤 속성을 애니메이션 할지 지정
transition-duration: 0.5s;
- 변화가 진행되는 시간
transition-timing-function: ease;
=> 변화 속도의 흐름
- ease: 시작과 끝은 느리고 중간은 빠르게 움직임
- linear: 처음부터 끝까지 같은 속도로 움직
- ease-in: 시작은 느리고 점점 빨라짐
- ease-out: 시작은 빠르고 끝은 느려짐
- ease-in-out: 시작과 끝은 느리고 중간은 빠르게 움직임
- transition-delay: 0.2s
=> 시작 지연 시간
- transition: 속성 시간 타이밍 지연;
=> 축약 문법
7 . transform
transform
- 요소의 위치나 형태를 변경하는 속성으로 화면에서 요소를 이동시키거나, 회전시키고, 크기를 변경하거나, 기울이는 등의 변형을 할 수 있음
- 문서의 실제 레이아웃 흐름에는 영향을 주지 않고 시각적으로만 변형되기 때문에 다른 요소의 배치가 깨지지 않으며, GPU 가속을 활용해 성능이 좋아 애니메이션이나 인터렉션 효과를 구현할 때 자주 사용
- 선택자 { transform: 변형함수(값); }
변형 함수
- translate: 이동
- scale: 크기 변경
- rotate: 회전
- skew: 기울이기
- transform: 여러 변형 함께 사용
8 . animation
animation
- @keyframes 이용해 여러 단계의 스타일 변화를 정의하고 이를 자동으로 재생하는 기능으로, 사용자 상호작용이 없어도 시간의 흐름에 따라 요소가 움직이거나 변형되도록 만들 수 있음
- @keyframes 애니메이션이름 {
단계 {
스타일;
}
}
- @keyframes bounce {
0% { transform: translateY(0); }
25% { transform: translateY(-50); }
50% { transform: translateY(-10); }
75% { transform: translateY(20); }
100% { transform: translateY(0); }
}
animation-name
- animation-name: fade
- 적용할 @keyframes 이름을 지정
animation-duration
- animation-duration: 2s;
- 애니메이션 한 번 실행되는 시간
animation-timing-function
- animation-timing-function: ease-in-out
- 애니메이션 속도 변화 방식
animation-delay
- animation-delay: 1s
- 애니메이션 시작 전 대기 시간
animation-iteration-count
- animation-iteration-count: infinite;
- 반복 횟수 지정. 숫자 또는 infinite(무제한)
animation-direction
- animation-direction: alternate:
- 재생 방향. forward(앞으로), alternate(앞으로 뒤로)
animation-fill-mode
- animation-fill-mode: forwards;
- 시작/종료 후 스타일 유지 여부
animation-play-state
- animation-play-state: paused;
- 애니메이션 재생/정지. play(진행), paused(멈춤)
- animation: name duration timing-function delay iteration-count direction fill-mode;
=> 한 번에 축약한 버전
'web' 카테고리의 다른 글
| Git (0) | 2026.06.15 |
|---|---|
| JavaScript - 1 (0) | 2026.06.15 |
| HTML, CSS - 2 (0) | 2026.06.11 |
| 2 . HTML, CSS - 1 (0) | 2026.06.11 |
| 1 . 웹, 웹 서비스 (0) | 2026.06.10 |