- CSS list-style - 마커 디자인 제어
- CSS table - 표의 가독성을 높이고, 테두리 제어
- display: inline-block - 블록과 인라인의 장점을 합친 가로 나열 및 크기 제어 속성
- CSS Box Model - 웹 요소의 크기를 결정하는 Content, Padding, Border, Margin의 상호작용
- CSS Borders 속성 - 테두리의 두께, 스타일, 색상 지정 및 모서리 곡률(border-radius) 제어
- CSS Margins 속성 - 요소 간의 바깥 여백 조절, 중앙 정렬 기법 및 마진 중첩 현상 이해
CSS list-style property
정보를 구조화하여 보여주는 CSS 리스트 속성
list-style-type (마커의 모양)
목록 아이템 앞에 붙는 마커(불릿이나 숫자)의 종류를 지정한다.
- 순서 없는 리스트(ul)의 경우 disc(기본 원형), circle(빈 원형), square(사각형), none(제거) 등을 사용한다.
- 순서 있는 리스트(ol)의 경우 decimal(숫자), lower-alpha(소문자 알파벳), upper-roman(대문자 로마자) 등을 사용한다.
list-style-position (마커의 위치)
마커가 목록 아이템의 안쪽(inside)에 위치할지, 바깥쪽(outside)에 위치할지 결정한다.
- outside는 마커가 본문 영역 밖에 위치하며, 글자가 길어져 줄 바꿈이 되어도 마커의 위치는 고정되어 깔끔하게 정렬된다. (기본값)
- inside는 마커가 본문 영역 안으로 들어오며, 줄 바꿈이 되면 마커 바로 아래까지 글자가 채워진다.
list-style (축약형 속성) 및 실무 활용
위에서 설명한 type, position, image 세 가지 속성을 한 줄로 줄여서 쓸 수 있다.
- 구문: list-style: [type] [position] [image];
- 보통은 이미지까지 쓰기보다는 list-style: none;을 사용하여 기본 스타일을 제거한 뒤, 커스텀 디자인을 입힐 때 가장 많이 활용합니다.
실무에서는 브라우저의 기본 스타일을 없애기 위해 list-style: none;을 정말 자주 사용한다.
불릿 대신 더 세련된 아이콘을 넣고 싶다면 list-style-image보다는 가상 요소(::before)를 활용하는 것이 위치 제어에 더 유리하다.
[표] 리스트 주요 속성 요약표
| 속성 | 설명 | 주요 값 예시 |
| list-style-type | 마커 모양 결정 | disc, decimal, none |
| list-style-image | 커스텀 이미지 마커 | url('icon.png') |
| list-style-position | 마커 배치 위치 | inside, outside |
| list-style | 위 속성들의 축약형 | none, circle inside |
[예제 코드] 기본 불릿 제거 및 위치 설정
/* 기본 불릿 제거 및 커스텀 마커 설정 */
.custom-list {
list-style: square inside;
background-color: #f9f9f9;
padding: 20px;
}
/* 내비게이션 바 등을 만들 때 불릿 아예 제거 */
.nav-menu {
list-style: none;
padding: 0;
margin: 0;
display: flex;
gap: 20px;
}
CSS Tables property
최신 레이아웃 시스템 이전부터 데이터를 구조화하는 데 사용된 CSS 테이블 속성
테이블 속성은 표의 가독성을 높이고, 테두리가 겹치는 방식이나 제목의 위치 등을 정교하게 제어하는 데 사용된다.
caption-side (표 제목 위치)
<caption> 태그로 작성된 표의 제목을 표의 위나 아래 중 어디에 배치할지 결정한다.
- top: 표의 윗부분에 제목을 표시한다. (기본값)
- bottom: 표의 아랫부분에 제목을 표시한다.
border (테두리) 및 border-spacing (보더 스페이싱) (간격)
테이블<table> 본체, 행(tr), 셀(th, td)에 테두리를 그린다.
테이블 자체에만 border를 주면 표 전체 외곽선만 생기므로 내부 칸막이를 만들려면 셀에도 각각 테두리를 지정해야 한다.
border-spacing은 인접한 셀의 테두리 사이 거리를 설정하며, border-collapse가 separate일 때만 동작한다.
값을 두 개 주면 가로 세로 간격을 다르게 설정할 수 있다.
border-collapse (보더 콜랩스) (테두리 병합)
테이블의 테두리를 하나로 합칠지, 떨어뜨려 놓을지 결정하는 가장 중요한 속성이다.
- separate(세퍼레이트)는 셀마다 독립된 테두리를 가지며 기본값이다.
- collapse는 인접한 테두리를 하나로 합쳐서 깔끔한 실선 형태로 만들며, 현대 웹 디자인에서 가장 선호된다.
깔끔한 표를 만들 때는 border-collapse: collapse;를 먼저 선언하는 것이 기본 공식이다.
테이블은 데이터 표시용으로만 사용하고, 전체 페이지 레이아웃을 잡을 때는 Flex나 Grid를 사용하는 것이 웹 표준에 적합하다.
[표] 테이블 주요 속성 요약표
| 속성 | 역할 | 주요 값 |
| caption-side | 표 제목 위치 제어 | top, bottom |
| border-collapse | 테두리 병합 여부 | collapse, separate |
| border-spacing | 셀 사이의 간격 | px, em 등 (separate일 때만) |
| table-layout | 테이블 너비 계산 방식 | auto, fixed |
[예제 코드] 테두리 병합과 제목 위치 제어
table {
width: 100%;
/* 테두리를 하나로 깔끔하게 합침 */
border-collapse: collapse;
}
th, td {
border: 1px solid #333;
padding: 10px;
text-align: center;
}
/* 제목 위치를 아래로 설정 */
caption {
caption-side: bottom;
padding: 10px;
font-weight: bold;
}
CSS display: inline-block
CSS 인라인의 특징과 블록의 특징을 모두 가지고 있는 하이브리드 성격의 속성
주요 특징과 사용하는 이유
요소를 한 줄로 나열하면서도 크기를 자유롭게 조절하고 싶을 때 사용하는 하이브리드 성격의 속성이다.
inline-block은 주변 요소들과의 관계에서는 inline처럼 행동하고, 자기 자신의 크기를 결정할 때는 block처럼 행동한다.
한 줄에 나열: 블록 요소(예: div)와 달리 줄 바꿈 없이 다른 요소와 같은 라인에 가로로 나열된다.
크기 설정 가능: 인라인 요소(예: span)와 달리 width, height, margin, padding 속성을 모두 완벽하게 적용할 수 있다.
텍스트 정렬 영향: 부모 요소의 text-align: center; 속성의 영향을 받아 간편하게 가로 중앙 정렬이 가능하다.
사용 시 주의할 점 (공백 현상)
HTML 코드 상의 줄 바꿈이나 띄어쓰기가 브라우저 화면에서 약 4px의 미세한 틈으로 나타나는 현상이 있다.
이는 브라우저가 코드의 빈 공간을 하나의 문자로 인식하기 때문이며, 부모 요소에 font-size: 0;을 주거나 HTML 태그 사이의 공백을 제거하여 해결할 수 있다.
가로 메뉴바를 만들 때 과거에는 float이나 inline-block을 썼지만, 최근에는 Flex를 사용하는 추세이다.
[표] inline vs block vs inline-block 특징 비교표
| 특징 | inline | block | inline-block |
| 줄 바꿈 | 없음 (옆으로 나열) | 있음 (무조건 새 줄) | 없음 (옆으로 나열) |
| 기본 너비 | 콘텐츠만큼 | 부모의 100% | 콘텐츠만큼 |
| 크기 지정 | 불가능 | 가능 | 가능 |
| 상하 여백 | 적용 안 됨 | 가능 | 가능 |
[예제 코드] inline-block을 활용한 박스 나열
.box {
display: inline-block; /* 핵심 속성 */
width: 100px;
height: 100px;
margin: 10px;
background-color: #3498db;
color: white;
text-align: center;
line-height: 100px;
}
CSS Box Model
웹 페이지의 모든 요소는 사각형 상자 모양으로 구성되며, 이를 CSS 박스 모델

CSS에서 "박스 모델"이라는 용어는 웹 디자인과 레이아웃을 다룰 때 사용된다. CSS 박스 모델은 본질적으로 모든 HTML 요소를 감싸는 **상자(Box)**와 같다. 모든 상자는 **콘텐츠(Content), 패딩(Padding), 테두리(Border), 마진(Margin)**의 네 가지 부분으로 구성된다.
박스 모델의 구성 요소 (가장 안쪽부터 바깥쪽 순서):
- 콘텐츠(Content): 텍스트나 이미지가 나타나는 상자의 실제 내용물이다.
- 패딩(Padding): 콘텐츠 주변의 영역을 비워준다. 패딩은 투명하다.
- 테두리(Border): 패딩과 콘텐츠를 감싸는 테두리 선이다.
- 마진(Margin): 테두리 바깥쪽의 영역을 비워준다. 마진은 투명하다
width와 height (너비와 높이)
요소의 크기를 결정하는 기본 속성
- 기본적으로 width와 height는 Content 영역의 크기만을 의미한다.
- 따라서 패딩이나 보더가 추가되면 브라우저가 계산하는 실제 요소의 전체 크기는 우리가 지정한 width보다 더 커지게 된다.
box-sizing (크기 계산 방식)
패딩과 테두리가 추가될 때 요소의 전체 너비가 변하는 것을 제어하는 매우 중요한 속성
- content-box (기본값): width를 100px로 설정하고 패딩을 20px 주면, 전체 너비는 140px(100 + 20 + 20)이 된다.
- border-box (권장): 패딩과 테두리 두께를 width 안에 포함시킵니다. width를 100px로 설정하면 패딩을 아무리 늘려도 전체 너비는 100px로 고정되어 레이아웃 계산이 훨씬 쉬워진다.
box-shadow (박스 그림자)
물리적인 크기에는 영향을 주지 않고 테두리 바깥이나 안쪽에 그림자 효과를 주어 시각적인 깊이감만 부여한다.
- 구문: box-shadow: [가로위치] [세로위치] [흐림정도] [번짐정도] [색상];
박스 그림자의 좌표는 X(3시 방향으로 이동), Y(6시 방향으로 이동), 번짐의 정도, 그림자의 색상 순으로 값을 선언한다.
블록 레벨 I (혼자 있고 싶어요)
인라인 레벨 E (우린 모두 칭구칭긔) 대표적 태그 span, img
가로 레이아웃은 Flex, 세로는 고정(Fix)하는 방식을 주로 쓴다.
[표] 박스 모델 핵심 요약표
| 키워드 | 역할 | 비고 |
| width/height | 요소의 가로/세로 크기 결정 | box-sizing 설정에 따라 기준이 변함 |
| box-sizing | 박스 크기 산정 기준 설정 | border-box를 쓰면 레이아웃 설계가 편함 |
| box-shadow | 요소에 입체적인 그림자 추가 | 레이아웃 크기에는 영향을 주지 않음 |
[예제 코드] box-sizing과 그림자 적용 방법
.box {
width: 200px;
height: 100px;
/* 크기 계산 방식 변경 (실무 필수) */
box-sizing: border-box;
padding: 20px;
border: 5px solid #34495e;
/* 그림자: X축(3시), Y축(6시), 흐림정도, 색상 */
box-shadow: 10px 10px 15px rgba(0, 0, 0, 0.3);
}
CSS Borders property
요소의 테두리를 결정하는 CSS 보더 속성
보더의 3대 핵심 속성과 방향 지정
테두리를 정의할 때는 보통 두께, 스타일, 색상 세 가지를 설정한다.
- border-width: 테두리의 두께를 지정한다. (px, em 등의 단위나 thin, medium, thick 키워드 사용)
- border-style: 테두리의 모양을 결정한다. (가장 중요하며, 이 속성이 없으면 테두리가 보이지 않습니다.)
- solid (실선), dashed (파선), dotted (점선), double (이중선) 등
- border-color: 테두리의 색상을 지정한다.
보더 축약 속성 (Shorthand)
각각의 속성을 따로 적는 대신, 한 줄로 간단하게 표현하는 방식을 가장 많이 사용한다.
- 구문: border: [두께] [스타일] [색상];
- 예시: border: 2px solid red;
또한, 특정 방향에만 테두리를 줄 수도 있습니다.
- border-top, border-right, border-bottom, border-left
테두리 둥글게 하기 (border-radius)
직각형 박스의 모서리를 부드러운 곡선으로 만든다.
원 만들기: 박스가 정사각형일 때 border-radius: 50%;를 주면 완벽한 원이 된다.
개별 설정: border-top-left-radius처럼 각 모서리마다 개별 곡률을 줄 수 있다.
방향은 10시 30분(좌상단), 1시 30분(우상단), 4시 30분(우하단), 7시 30분(좌하단) 순서로 기억하여 값을 세팅한다.
테두리가 화면에 나타나지 않는다면 border-style을 빼먹지는 않았는지 가장 먼저 확인해야한다
border: none;은 버튼이나 입력창의 기본 테두리를 제거할 때 자주 쓰인다.
보더 역시 패딩처럼 요소의 전체 크기에 영향을 주므로, 레이아웃이 틀어지는 것을 막으려면 box-sizing:border-box;를 함께 사용하는 것이 좋다.
[표] 보더 관련 주요 속성 요약표
| 속성 | 설명 | 주요 값 예시 |
| border-style | 테두리 모양 (필수 속성) | solid, dashed, none |
| border-width | 테두리 두께 | 1px, 0.5rem |
| border-color | 테두리 색상 | #000, transparent |
| border-radius | 모서리 곡률 설정 | 8px, 50% |
[예제 코드] 테두리 축약형과 특정 방향 강조선 적용
.card {
width: 250px;
padding: 20px;
background-color: #fff;
/* 축약형 테두리 설정: 두께 모양 색상 */
border: 1px solid #ddd;
/* 아래쪽에만 강조선 추가 (6시 방향) */
border-bottom: 5px solid #3498db;
/* 모서리를 부드럽게 */
border-radius: 10px;
}
CSS Margins property
요소와 요소 사이의 바깥쪽 여백을 결정하는 CSS 마진 속성
정의 및 특징 (음수 값과 auto)
마진은 테두리 바깥의 공간
- 투명함: 다른 요소와의 거리를 조절하며, 배경색 없이 항상 투명하다.
- 음수 값 가능: 음수(-) 값을 사용하여 요소를 끌어당기거나 겹치게 만들 수 있다.
- auto 값: 너비가 지정된 블록 요소에서 좌우 마진을 auto로 설정하면 브라우저가 남은 공간을 반으로 나누어 요소를 가로 중앙에 배치한다.
개별 속성과 축약형 (Shorthand)
네 방향을 각각 조절하거나 한 번에 선언할 수 있다.
개별 속성
- margin-top: 위쪽 여백
- margin-right: 오른쪽 여백
- margin-bottom: 아래쪽 여백
- margin-left: 왼쪽 여백
축약형 작성법 (시계 방향 원칙)
적는 값의 개수에 따라 적용되는 방식이 달라진다.
마진 역시 12시(top), 3시(right), 6시(bottom), 9시(left)의 시계 방향 원칙을 따른다.
마진 상쇄 (Margin Collapsing) 현상
마진을 다룰 때 가장 주의해야 할 독특한 특징
인접한 두 블록 요소의 상하 마진이 만날 때, 두 마진의 합이 아닌 더 큰 쪽의 마진으로 합쳐지는 현상을 말합니다.
- 언제 발생하나요?: 위아래로 인접한 요소 사이, 또는 부모와 첫 번째/마지막 자식 요소 사이에서 주로 발생
- 왜 발생하나요?: 리스트나 문단 사이의 간격이 너무 벌어지는 것을 막기 위한 브라우저의 기본 동작
마진은 요소와 요소 사이의 **"거리"**를 두기 위해 사용한다.
블록 요소를 가로 중앙에 배치하고 싶다면 **너비(width)를 지정하고 margin: 0 auto;**를 사용
상하 간격이 생각보다 좁다면 마진 상쇄가 일어나고 있지 않은지 확인하기
[표] 마진 vs 패딩 핵심 비교표
| 구분 | 마진 (Margin) | 패딩 (Padding) |
| 위치 | 테두리 바깥쪽 (요소 간 거리) | 테두리 안쪽 (내용과 테두리 사이) |
| 음수 값 | 사용 가능 (겹침 효과 등에 쓰임) | 사용 불가능 |
| 중앙 정렬 | margin: auto로 가능 | 불가능 |
| 배경 영향 | 항상 투명함 | 요소의 배경색이 채워짐 |
[예제 코드] 중앙 정렬과 음수 마진 겹침 효과
.box {
width: 200px;
height: 100px;
background-color: #e74c3c;
/* 상하 50px 여백, 좌우 auto로 가로 중앙 정렬 */
margin: 50px auto;
}
.overlap {
background-color: #2ecc71;
/* 음수 마진을 사용해 위의 박스와 70px 겹치게 함 */
margin-top: -70px;
margin-left: 50px;
}
'코딩 > CSS' 카테고리의 다른 글
| [TIL] CSS: 시각적 완성도를 높이는 배경(Backgrounds)과 그라데이션(Gradients) (1) | 2026.03.20 |
|---|---|
| [TIL] CSS: 패딩(Padding), 디스플레이(display), 플롯(float) 및 포지션 제어 (1) | 2026.03.19 |
| [TIL] CSS : 아이콘 폰트와 텍스트 제어 및 컬러 속성 (2) | 2026.03.17 |
| [TIL] CSS: 실무에 쓰이는 웹 폰트 적용법과 트래픽 최적화 전략 (1) | 2026.03.16 |
| [TIL] CSS 기초 정리 : 선택자, 적용 방식, 그리고 우선순위 규칙 (1) | 2026.03.13 |