首頁 web前端 css教學 如何在螢幕裝置上擁有 HTML 的外觀和感覺

如何在螢幕裝置上擁有 HTML 的外觀和感覺

Sep 21, 2024 am 06:26 AM

How to Have the Look and Feel of An HTML on Screen devices

如何在螢幕裝置上以 HTML 形式呈現 A4 的外觀

我開始使用老式 HTML 頁面建立我的履歷,但很快就意識到在螢幕上開啟時它無法開箱即用。內容源源不斷地流動,沒有任何分頁符,而且它看起來根本不像 A4 文件。為了解決這個問題,我必須應用一些技巧,包括一些 CSS 和一些 JavaScript。

我的目標是:

  • 讓我的履歷在螢幕上看起來與列印時一樣。
  • 在螢幕上顯示單獨的頁面,就像 PDF 或 Google 文件文件一樣。

使用 HTML 建立履歷時面臨的挑戰

當我開始寫履歷時,我很快意識到螢幕裝置上的瀏覽器不支援 A4 等頁面尺寸。相反,它們只是連續地流動內容,這意味著文字和部分可以溢出而沒有任何分頁符號。要根據 A4 尺寸建立不同的頁面,每當內容超出典型 A4 頁面的高度時,我必須手動處理分頁符號。

主要解決方案涉及使用 CSS @media print 和分頁符號屬性來控制內容在一頁太長時的行為方式,並應用 JavaScript 來處理螢幕上的動態內容。

1. 使用 CSS 自動分頁(用於列印)

為了確保列印時內容正確流動,我使用了 page-break-inside:void 屬性。此屬性可防止在兩個頁面之間拆分標題或大段落等重要元素,從而允許瀏覽器根據需要自動將內容分成頁面。

用於列印的 HTML 範例:

<!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>
登入後複製

用於列印的 CSS:

/* 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 是如何運作的:

  • page-break-after:always; 確保在列印模式下每個 .page div 後內容將分成新頁面。
  • page-break-inside:避免; 防止標題或大的部分在兩頁之間尷尬地分割,這對於在列印時保持乾淨、專業的外觀至關重要。

2. 使用 JavaScript 處理畫面上的分頁符號

雖然 CSS 可以處理列印時的分頁符,但 螢幕裝置 的工作方式不同。瀏覽器不會自動將內容分成螢幕上的不同頁面,因此我需要 JavaScript 來偵測內容何時超出 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);
}
登入後複製

為什麼需要 JavaScript:

與列印不同,在螢幕上,文字溢位時不會自動從一個 .page div 流到下一個 .page div。瀏覽器只是讓內容溢出到頁面邊界之外。透過上面的 JavaScript 程式碼,我可以偵測內容何時溢出並將其拆分為新頁面,模擬您在 PDF 或 Google 文件中期望的多頁面體驗。

3. 確保螢幕和列印頁面流一致

透過這種方法,內容在不同裝置上表現一致:

  • 螢幕上:JavaScript 偵測內容溢位並依需求建立其他 .page div。這模擬了查看 A4 文件的體驗,您可以在整齊劃分的頁面之間捲動。

  • 列印:CSS @media 列印和分頁符號屬性處理列印時的自動分頁符,因此您的文件在紙上看起來就像精美的一樣。

結論

建立模仿 A4 頁面在螢幕裝置上的外觀和感覺的 HTML 文件需要結合使用 CSS 和 JavaScript。雖然 CSS 本身就可以有效地處理列印方面的問題,但 JavaScript 對於管理螢幕上的分頁符號至關重要。透過將兩者結合起來,您可以確保無縫體驗,無論是在螢幕上還是在列印中,文字都整齊地跨頁面流動。

以上是如何在螢幕裝置上擁有 HTML 的外觀和感覺的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

託管您自己的非JavaScript分析的選項 託管您自己的非JavaScript分析的選項 Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

See all articles