友善列印:切版技巧大補帖
每個網頁都有讓使用者列印成紙張的功能,但是在一般列印時,版面在網頁上看起來的精美往往與按下列印後的預覽不同,本篇將介紹關於「友善列印」的做法。
---
一般列印 vs 友善列印
「一般列印」和「友善列印」的差異主要在於輸出的內容與格式
⦿ 一般「列印」:
直接呼叫瀏覽器的列印功能,會把目前頁面完整照搬到列印預覽,包括網站頁首、導覽列、側邊欄、廣告、背景圖片等等。
若版面是多欄、或有複雜排版,可能印出來會很亂,適合使用者臨時要印目前看到的整個頁面,但不保證美觀。
⦿ 「友善列印」:
通常是另外提供一個簡化後的列印專用版本,可能重新排版,只保留標題和主要內容,或是透過 print stylesheet(列印樣式表,@media print),在同一頁面隱藏不必要的元素(如 header、footer、廣告、按鈕)。
目的在於讓輸出的紙本更乾淨、易讀,並減少墨水和紙張浪費,有時還會特別調整字體大小、行距、去掉背景色。
友善列印切版實作
要針對列印時的版面進行 css 的撰寫,筆者建議可以特別將列印的樣式獨立出一個 css 檔案,專門寫列印的樣式,如 print.scss。
接下來便可在 css 中添加內容:
@media print { /* 列印相關樣式寫這邊 */
div {
...
}
}
以下就開始介紹幾個常見常用的實用小撇步~
1. 顯示區塊背景色 / 背景圖:因為列印時會隱藏底色,加上這行可讓背景色加回,同時需注意瀏覽器相容性問題
div {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
2. 強制換頁:加入此語法可在元素的前或後強制換頁
div {
break-before: page; /* 元素前強制換頁 */
}
div {
break-after: page; /* 元素後強制換頁 */
}
3. 自定義頁面尺寸:可自行設定間距與頁面大小
size 後可同時寫版面尺寸與方向,如範例的 A4 表示版面尺寸、landscape 表示為水平呈現,以下介紹幾種方向的設定:
auto 自動 / landscape 橫向 / portrait 縱向
@page {
size: A4 landscape;
margin-top: 0;
margin-left: 2cm;
}
4. 避免元件區塊被截斷:有時一個區塊內容很多,又碰到剛好換頁就會被截斷,加上此語法則可透過直接換頁來避免截斷
*註:若瀏覽器為 safari,則有可能失效
div {
break-inside: avoid;
}
友善列印效果預覽
寫完所有針對友善列印的設定後,能透過瀏覽器預覽效果是最重要的一步,能檢視是否有跑版或設定失效的部分。
要用瀏覽器模擬列印效果的路徑如下(以 chrome 為例):
1. 網頁上點選右鍵 → 檢查
2. 右上角 ... → 更多工具 → 算繪
3. 模擬 CSS 媒體類型 -> 下拉選單「列印」
*註:不是對每個網頁做此動作都會看得出頁面變化,若該網頁沒有特別撰寫 print 樣式,則選擇後也不會有反應
這三步就是即時預覽列印 css 畫面的方法,更準確也可以直接使用瀏覽器本身的列印功能,就可在預覽頁看見當前效果。
---
以上就是關於友善列印的介紹,此功能常見於公家機關網頁,下次剛好做到友善列印功能時不妨試試以上設定的小撇步!
參考資料:
https://im1010ioio.hashnode.dev/css-media-print
https://beareatapple.hashnode.dev/css-print-friendly
https://medium.com/@ruby29922026/vue%E7%AD%86%E8%A8%98-%E5%A6%82%E4%BD%95%E8%99%95%E7%90%86%E5%88%97%E5%8D%B0-af21f05c6522