웹 화면과 출력물(프린트)은 목적이 다릅니다.
@media print를 사용하면 인쇄 시에만 적용되는 전용 스타일을 지정해 화면용과 분리해 관리할 수 있어요.
@media print란?@media print {
/* 인쇄 전용 스타일 */
}
@media print {
/* 불필요한 UI 숨김 */
header, nav, footer, .btn, .ad, .pagination { display: none !important; }
/* 가독성 최적화 */
body { background: white !important; color: black !important; }
* { box-shadow: none !important; text-shadow: none !important; }
/* 표 */
table { width: 100%; border-collapse: collapse; }
table, th, td { border: 1px solid #000; }
/* 페이지 나눔 */
h2 { page-break-before: always; } /* 제목 앞에서 페이지 분리 */
.page-break { page-break-after: always; } /* 해당 구역 뒤에서 분리 */
/* 요소 단위 분리 방지 */
.card, figure, table { break-inside: avoid; page-break-inside: avoid; }
}
@page {
size: A4; /* A4, Letter 등 */
margin: 16mm; /* 여백 */
}
/* 브라우저마다 @page 지원/적용이 상이할 수 있음 */
참고: Chrome/Edge는 비교적 잘 적용되지만, 브라우저·프린터 설정의 여백/비율 옵션이 우선될 때도 있어요.
대부분의 브라우저는 기본적으로 배경 그래픽 인쇄를 끄는 경우가 많습니다.
사용자 쪽 인쇄 대화상자에서 “배경 그래픽(배경 색/이미지) 인쇄” 옵션을 켜야 확실합니다.
추가로 CSS에서 다음을 권장하긴 해요(강제는 아님):
@media print {
* {
-webkit-print-color-adjust: exact; /* Chromium 계열 */
print-color-adjust: exact;
}
}
@media print {
a[href]:after {
content: " (" attr(href) ")";
font-size: 90%;
}
}
print✅ 화면에서는 헤더·네비·버튼이 보이고, 인쇄 미리보기에서는 본문만 보이며 링크 뒤에 URL이 자동으로 붙습니다.
✅ “페이지 나눔” 버튼으로 테스트용 구역을 만들 수 있어요.
✅ 화면에서는 줄무늬(지브라) 행, 인쇄에서는 잉크 절약 & 선명한 테이블
✅border-collapse, 명확한border,print-color-adjust처리
✅ 큰 섹션이 시작될 때마다
page-break-before: always;
✅ 카드/이미지가 중간에서 끊기지 않게break-inside: avoid적용
break-inside: avoid를 사용했는가?a[href]:after로 처리했는가?Q. PDF 저장 시 배경색이 빠집니다.
A. 브라우저 인쇄 설정에서 “배경 그래픽”을 켜세요. CSS의 print-color-adjust: exact는 힌트일 뿐, 사용자 설정이 우선될 수 있습니다.
Q. 요소가 페이지 중간에서 잘립니다.
A. 해당 요소에 break-inside: avoid; page-break-inside: avoid;를 적용하세요. 100% 보장은 아니지만 대부분의 경우 개선됩니다.
Q. @page가 안 먹는 것 같아요.
A. 브라우저/프린터 드라이버/OS에 따라 여백/용지 설정이 강제될 수 있습니다. 인쇄 대화상자에서 여백 설정을 “기본/없음” 등으로 조절해 보세요.
@media print는 화면과 출력물의 목적을 분리하고, 인쇄 경험을 최적화하는 핵심 도구입니다.