디바이스 종류나 화면 크기에 상관없이, 어디서든 일관된 레이아웃 및 사용자 경험을 제공하는 디자인 기술
제품이나 서비스를 사용하는 사람들이 느끼는 전체적인 경험과 만족도를 개선하고, 최적화하기 위한 디자인과 개발 분야이다.
이해 및 분석 : 유저 리서치, 데이터 분석, 페르소나 설정 등등구조화 : 정보 구조 설계, 유저 시나리오 및 저니 맵 작성 등등구체화 및 검증 : 와이어프레임, 프로토타입 제작 및 사용성 테스트 등등서비스와 사용자 간의 상호작용을 가능하게 하는 디자인 요소들을 개발하고 구현하는 분야이다.
핵심 목표 : 단순히 보기 좋은 디자인을 넘어 정보의 위계를 잡아 사용자가 무엇을 먼저 봐야할지 유도하고, 일관성을 통해 학습 비용을 줄이는 것이 목표이다.레이아웃 & 그리드 : 정보의 배치와 정렬타이포그래피 & 컬러 : 가독성 확보 및 중요도 표현인터랙션 요소 : 버튼의 상태 (기본, 호버, 클릭) 표현 및 시각적 피드백웹 페이지의 레이아웃을 조정하는 데 사용되는 12개의 컬럼으로 구성된 시스템
Container : 컬럼들을 담고 있는 공간Column : 실제 컨텐츠를 포함하는 부분Gutter : 컬럼과 컬럼 사이의 여백 영역 (상하좌우)<div class = "container">
<div class = "row">
<div class = "col-4"></div>
<div class = "col-4"></div>
<div class = "col-4"></div>
</div>
</div>

<div class="container">
<div class="row">
<div class="col">
<div class="box">col</div>
</div>
<div class="col">
<div class="box">col</div>
</div>
<div class="col">
<div class="box">col</div>
</div>
</div>

<div class="container">
<div class="row">
<div class="box col-4">
<div>col-4</div>
</div>
<div class="box col-8">
<div class="row">
<div class="col-6">
<div class="box">col-6</div>
</div>
<div class="col-6">
<div class="box">col-6</div>
</div>
<div class="col-6">
<div class="box">col-6</div>
</div>
<div class="col-6">
<div class="box">col-6</div>
</div>
</div>
</div>
</div>
</div>

→ 오른쪽 8개 Column이 다시 12개로 분리된다.
<div class="container">
<div class="row">
<div class="col-4">
<div class="box">col-4</div>
</div>
<div class="col-4 offset-4">
<div class="box">col-4 offset-4</div>
</div>
</div>
<div class="row">
<div class="col-3 offset-3">
<div class="box">col-3 offset-3</div>
</div>
<div class="col-3 offset-3">
<div class="box">col-3 offset-3</div>
</div>
</div>
<div class="row">
<div class="col-6 offset-3">
<div class="box">col-6 offset-3</div>
</div>
</div>
</div>

Grid system에서 column 사이에 여백 영역이다.
x축은 padding,y축은 margin으로 여백 생성

gx-0 → 여백제거<div class="container">
<div class="row gx-0">
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
</div>
</div>

gy-5 → y축 여백 증가<div class="container">
<div class="row gy-5">
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
</div>
</div>

g-5 → x, y축 여백 증가<div class="row g-5">
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
<div class="col-6">
<div class="box">col</div>
</div>
</div>
</div>

웹 페이지를 다양한 화면 크기에서 적절하게 배치하기 위한 분기점이다.
<!-- 기본 화면: 모든 박스 col-12 → 한 줄에 1개 -->
<!-- sm 이상: 모든 박스 col-sm-6 → 한 줄에 2개 -->
<!-- md 이상: 첫 줄 col-md-1 + col-md-10 + col-md-1 -->
<!-- md 이상: 네 번째 박스 col-md-12 → 다음 줄 전체 차지 -->
<div class="container">
<div class="row">
<div class="col-12 col-sm-6 col-md-1">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-6 col-md-10">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-6 col-md-1">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-6 col-md-12">
<div class="box">col</div>
</div>
</div>
</div>
<!-- 기본 화면: col-12 → 한 줄에 1개 -->
<!-- sm 이상: col-sm-4 → 한 줄에 3개 -->
<!-- md 이상: col-md-6 → 한 줄에 2개 -->
<!-- g-4: 박스 사이의 가로·세로 간격 -->
<!-- offset-md-0: md 이상에서 왼쪽 여백 0칸 -->
<div class="container">
<div class="row g-4">
<div class="col-12 col-sm-4 col-md-6">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-4 col-md-6">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-4 col-md-6">
<div class="box">col</div>
</div>
<div class="col-12 col-sm-4 col-md-6 offset-md-0">
<div class="box">col</div>
</div>
</div>
</div>
💡Bootstrap Grid system은 화면 크기에 따라 12개의 칸을 각 요소에 나누어 주는 것이다!
position : 흐름을 무시하고 원하는 좌표에 배치 할 때FlexBox : Grid로 나눈 구역 내부를 정렬할 때Bootstrap Grid system : 웹 페이지의 전체적인 구조를 잡을 때