구식 HTML 페이지를 사용하여 이력서를 작성하기 시작했는데 화면에서 열었을 때 즉시 작동하지 않는다는 것을 금방 깨달았습니다. 페이지 나누기 없이 내용이 끝없이 흘러가는데 확실히 A4 문서처럼 보이지는 않았습니다. 이 문제를 해결하려면 CSS와 JavaScript를 포함한 몇 가지 트릭을 적용해야 했습니다.
내 목표는 다음과 같습니다.
이력서 작성을 시작하면서 스크린 기기의 브라우저는 A4와 같은 페이지 크기를 고려하지 않는다는 사실을 금방 깨달았습니다. 대신 콘텐츠가 연속적으로 흐르기 때문에 페이지 나누기 없이 텍스트와 섹션이 넘칠 수 있습니다. A4 크기를 기반으로 고유한 페이지를 만들기 위해 콘텐츠가 일반적인 A4 페이지 높이를 초과할 때마다 페이지 나누기를 수동으로 처리해야 했습니다.
기본 솔루션은 CSS @media 인쇄 및 페이지 나누기 속성을 사용하여 한 페이지에 너무 긴 콘텐츠의 동작 방식을 제어하고 JavaScript를 적용하여 화면의 동적 콘텐츠를 처리하는 것이었습니다.
인쇄 시 내용이 올바르게 흐르도록 하기 위해 페이지 나누기 내부: 방지 속성을 사용했습니다. 이 속성은 제목이나 큰 단락과 같은 중요한 요소가 두 페이지 간에 분할되는 것을 방지하여 브라우저가 필요에 따라 자동으로 콘텐츠를 페이지로 나눌 수 있도록 합니다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>A4 Styled Document</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="page"> <h1>Title of Page 1</h1> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p> </div> <div class="page"> <h1>Title of Page 2</h1> <p>Content will automatically break into new pages for printing...</p> </div> </body> </html>
/* Define page layout for A4 size */ @media print { body { margin: 0; padding: 0; } .page { width: 210mm; height: 297mm; margin: 0; padding: 20mm; page-break-after: always; /* Automatically breaks after each page */ box-shadow: none; overflow: visible; /* Ensures content flows properly when printing */ } /* Prevent page breaks inside headers or large paragraphs */ h1, h2, h3, p { page-break-inside: avoid; } }
CSS는 인쇄 시 페이지 나누기를 처리할 수 있지만 화면 장치는 같은 방식으로 작동하지 않습니다. 브라우저는 콘텐츠를 화면에서 자동으로 별개의 페이지로 나누지 않기 때문에 콘텐츠가 A4 페이지 크기를 초과하는 경우 이를 감지하고 이를 새 페이지로 동적으로 분할하려면 JavaScript가 필요했습니다.
제가 관리한 방법은 다음과 같습니다.
window.onload = function () { const pages = document.querySelectorAll('.page'); pages.forEach(page => { if (page.scrollHeight > page.clientHeight) { splitPageContent(page); } }); }; function splitPageContent(page) { const newPage = document.createElement('div'); newPage.classList.add('page'); const contentToMove = page.innerHTML.slice(page.clientHeight / 2); newPage.innerHTML = contentToMove; page.innerHTML = page.innerHTML.slice(0, page.clientHeight / 2); // Insert the new page into the DOM after the current page page.parentNode.insertBefore(newPage, page.nextSibling); }
화면에서는 인쇄와 달리 텍스트가 오버플로될 때 한 .page div에서 다음 div로 자동으로 흐르지 않습니다. 브라우저는 단순히 콘텐츠가 페이지 경계를 넘어 퍼지도록 허용합니다. 위의 JavaScript 코드를 사용하면 콘텐츠가 오버플로되는 시기를 감지하여 새 페이지로 분할하여 PDF나 Google Docs에서 기대할 수 있는 다중 페이지 환경을 시뮬레이션합니다.
이 접근 방식을 사용하면 콘텐츠가 여러 기기에서 일관되게 작동합니다.
On Screen: JavaScript는 콘텐츠 오버플로를 감지하고 필요에 따라 추가 .page div를 생성합니다. 깔끔하게 구분된 페이지 사이를 스크롤할 수 있는 A4 문서를 보는 것과 같은 경험을 시뮬레이션합니다.
인쇄 중: CSS @media 인쇄 및 페이지 나누기 속성은 인쇄 시 자동 페이지 나누기를 처리하므로 문서가 종이에 인쇄된 것처럼 보입니다.
화면 장치에서 A4 페이지의 모양과 느낌을 모방하는 HTML 문서를 작성하려면 CSS와 JavaScript의 조합이 필요합니다. CSS만으로도 인쇄 측면을 효과적으로 처리할 수 있지만, 화면의 페이지 나누기를 관리하려면 JavaScript가 필수적입니다. 두 가지를 결합하면 화면과 인쇄 모두에서 텍스트가 페이지 전체에 깔끔하게 흐르는 원활한 경험을 보장할 수 있습니다.
위 내용은 화면 장치에서 HTML의 모양과 느낌을 갖는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!