教你10分鐘內學習如何CSS 設置網頁打印時的樣式

本文將教您開始為要打印的頁面編寫CSS所需要的一切提供幫助。

@media 規則

If you’ve done any responsive design, you’ll already know about the @media rule. As well as different screen sizes, @media also lets you target “print” media. Here’s an example:
如果你做過任何響應性的設計,你就已經知道 @media 規則了。除了不同的屏幕大小,@media還可以為你控制打印樣式。下面是一個例子:

@media print {/* 這些樣式僅在頁面打印或保存為PDF時使用。 */h1 { font-size: 16pt; }
}

使用此規則,您可以將標準的css指定為普通樣式,然后添加一些僅在打印時使用的自定義樣式。

p { margin: 1em 0; }@media print {/* 打印時隱藏相關文章鏈接 */.related-articles { display: none; }
}

如果你想將所有標準屏幕樣式“歸零”并從頭開始,你可以用另一個 @media 規則來包裝你的屏幕樣式:

@media screen {  /* 此處為標準樣式。 */  
}  @media print {  /* 在此處打印樣式。 */  
}  

分頁符屬性

為了確保內容在頁面之間流暢地流動,您需要控制內容在頁面之間分割的時間。例如,如果一個大標題出現在頁面底部,這看起來很尷尬——你希望它從一個新的頁面開始。類似地,如果可能,您可能希望避免一個表跨越多個頁面。

You can do this using page-break-before, page-break-after, and page-break-inside. You can set the value for these properties to always or avoid.
你可以使用page-break-beforepage-break-afterpage-break-inside來實現這一點。你可以將這些屬性的值設置為alwaysavoid


h1 {  /* h1元素始終從新頁面的頂部開始。 */  page-break-before: always;  
}  section.city-map {  /* 此部分始終占據其自己的一個或多個頁面。 */  page-break-before: always;  page-break-after: always;  
}  table {  /* 如果可能,表不會跨頁拆分。 */  page-break-inside: avoid;  
}  

提示:重復表格標題

如果您的文檔包含跨越多頁的表格,則在打印時將很難閱讀,除非表格標題在每一頁的開頭重復。這很容易實現,只需使用表中的 theadtbody 元素。

<table>  <thead>  <tr>  <th>City</th>  <th>Population</th>  </thead>  <tbody>  <tr>  <td>Sydney</td>  <td>4.627 million (2018)</td>  </tr>  </tbody>  
</table>  

打印后,您的表格將如下所示:

Table with repeated headings

提示:添加或刪除內容

Sometimes you might want to add content that’s only shown when printing. For example - you might want to link URLs to be printed. You can do this by using the :after pseudo-element:
有時,您可能希望添加僅在打印時顯示的內容。例如,您可能希望鏈接要打印的URL。您可以使用::after 偽元素來完成此操作:

@media print {  a[href]:after {  content: " (" _attr_(href) ")";  }  
}

您可能還希望僅在打印時隱藏或顯示某些元素。通過 @mediadisplay 結合起來,這可以很容易地完成。

/* 隱藏屏幕水印。 */  
.watermark {  display: none;  
}  @media print {  /* 打印時隱藏導航。 */  nav {  display: hide;  }  /* 打印時顯示水印 */  .watermark {  display: initial;  }  
}  

提示:使用模擬css媒體進行開發

為了加快開發過程中的反饋循環,可以將瀏覽器設置為顯示打印樣式。要在Mac上的Chrome中實現這一點,請打開開發者工具,然后使用Command + shift + p快捷鍵運行命令,然后搜索“Emulate CSS print media type”。

Emulate CSS media

其他瀏覽器的開發工具中也會有類似的功能。
遺憾的是,要查看分頁符,您每次都需要手動打印到PDF。

高級提示:孤行和寡行

orphanswidows 屬性控制元素中的文本跨頁面拆分的方式。有時,調整這些值可以提高打印文檔的可讀性。

p {  /* 如果在換行符之前不少于3行,則將該元素移動到新頁的開頭。 */  orphans: 3;  
}  

Orphans example

在下面的左側,orphans被設置為2,因此第二段開始于分頁符之前。通過將orphans設置為3,就像右邊那樣,該段落被強制下移到下一頁的開始。
widow 屬性與 orphan 屬性相反——它指定了新頁面開始處可以包含的最少行數。

高級提示: @page規則

使用 @page 規則,您可以定制特定頁面的頁邊距。

@page:first {  /* 首頁沒有頁邊距。 */  margin: 0;  
}  @page {  /* 在所有其他頁面上設置頁邊距。 */  margin: 2cm;  
}  

不幸的是,瀏覽器對此的支持目前有點有限,您只能使用::first, :last, :left, :right:blank 偽選擇器來選擇頁面。

總結

您現在熟悉了Chrome、Firefox和Safari等現代瀏覽器支持的重要打印布局屬性。
遺憾的是,在現代瀏覽器中對更高級的打印布局功能的支持通常是有限的。例如,瀏覽器不提供使用CSS添加自定義頁眉或頁腳內容的標準方法。您可能希望查看 paged.js項目,該項目為瀏覽器當前缺少的許多打印布局功能提供了多個填充。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35263.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35263.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35263.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

競賽項目 深度學習的動物識別

文章目錄 0 前言1 背景2 算法原理2.1 動物識別方法概況2.2 常用的網絡模型2.2.1 B-CNN2.2.2 SSD 3 SSD動物目標檢測流程4 實現效果5 部分相關代碼5.1 數據預處理5.2 構建卷積神經網絡5.3 tensorflow計算圖可視化5.4 網絡模型訓練5.5 對貓狗圖像進行2分類 6 最后 0 前言 &#…

【Java】一只小菜坤的編程題之旅【3】

文章目錄 1丶判定是否互為字符重排2、楊輝三角3丶某公司的1個面試題&#xff08;字符串包含問題&#xff09; 1丶判定是否互為字符重排 這個題我們用一個非常簡單的思想就能實現&#xff0c;我們先將字符串轉換為字符數組&#xff0c;然后對字符數組進行排序&#xff0c;然后再…

el-radio單選框,取消選中

1.背景&#xff1a;在公司開發需求中有一個選擇顏色的單選框&#xff08;黑色&#xff0c;白色&#xff09;&#xff0c;每種顏色選擇后均支持取消選中&#xff0c;可是el-radio標簽不支持取消選中。 2.解決&#xff1a; 方法1: <el-radio-group v-model"radioColo…

【Apollo】自動駕駛的平臺背景,平臺介紹

作者簡介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在學習C/C&#xff0c;Java&#xff0c;Python等 作者主頁&#xff1a; 七七的個人主頁 文章收錄專欄&#xff1a; 七七的閑談 歡迎大家點贊 &#x1f44d; 收藏 ? 加關注哦&#xff01;&#x1f496;&#x1f…

spring boot 集成 jetcache【基礎篇:@Cached、@CreateCache、@CacheRefresh】

手打不易&#xff0c;如果轉摘&#xff0c;請注明出處&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/129832925 目錄 前言 版本 配置通用說明 項目結構 代碼 啟動類 實體類 基礎使用——增刪改查&#xff08;Cached、CacheInv…

opencv實戰項目 手勢識別-手勢控制鍵盤

手勢識別是一種人機交互技術&#xff0c;通過識別人的手勢動作&#xff0c;從而實現對計算機、智能手機、智能電視等設備的操作和控制。 1. opencv實現手部追蹤&#xff08;定位手部關鍵點&#xff09; 2.opencv實戰項目 實現手勢跟蹤并返回位置信息&#xff08;封裝調用&am…

虛擬機安裝 Ubuntu桌面版,宿主機無法訪問虛擬機 ufw 防火墻簡單使用

虛擬機安裝 Ubuntu桌面版&#xff0c;宿主機無法訪問虛擬機 問題處理安裝ssh服務ufw防火墻 放行ssh服務ufw 常用命令 問題 本次安裝使用的 ubuntu-22.04.2-desktop-amd64 &#xff0c;網絡連接使用的是橋接&#xff0c;查看ubuntu的ip是正常的&#xff0c;與宿主機在同一個網段…

力扣的板子

板子 線性篩法求質因子的板子快速冪 線性篩法求質因子的板子 int limit 100000; //修改為題目中的數字的上限 bool isprime[100005] {0}; //保存所有1~limit中的數字是不是質數 int myprime[100005] {0}; //保存2~limit中所有數字的最小質因子 int primes[100000] {0}; …

airflow是什么

Airflow 簡介 Airflow是一個基于有向無環圖(DAG)的可編程、調度和監控的工作流平臺&#xff0c;它可以定義一組有依賴的任務&#xff0c;按照依賴依次執行。airflow提供了豐富的命令行工具用于系統管控&#xff0c;而其web管理界面同樣也可以方便的管控調度任務&#xff0c;并…

Lua 閉包

一、Lua 中的函數 Lua 中的函數是第一類值。意味著和其他的常見類型的值&#xff08;例如數值和字符串&#xff09;具有同等權限。 舉個例子&#xff0c;函數也可以像其他類型一樣存儲起來&#xff0c;然后調用 -- 將 a.p 指向 print 函數 a { p print } -- 使用 a.p 函數…

(原創)Flutter與Native頁面互相跳轉

前言 實際開發混合項目時&#xff0c;常常會有頁面跳轉的需求 如果是原生界面和flutter界面需要互相跳轉 這種情況應該怎么處理呢&#xff1f; 今天這篇博客主要就來介紹下這個情況 其實想一下&#xff0c;這個問題可以拆成四個小的問題來分析&#xff1a; 1&#xff1a;原生界…

什么是全局代理,手機怎么設置全局代理

目錄 什么是全局代理 全局代理的優缺點 優點 缺點 手機怎么設置全局代理 注意事項 總結 在計算機網絡和信息安全中&#xff0c;全局代理是一種常用的技術手段&#xff0c;用于將網絡流量通過代理服務器進行轉發和處理。本文將介紹什么是全局代理&#xff0c;探討全局代理…

pyspark筆記 pyspark.sql.functions

col qqpyspark 筆記 pyspark.sql.function col VS select_UQI-LIUWJ的博客-CSDN博客 取某一列 lit 創建一個包含指定值的列 date_trunc 將日期截取成由第一個參數指定的字符串值 year, yyyy, yy——截取到年month,mon,mm——截取到月day,dd ——截取到天microsecondmillis…

SpringBoot WebSocket配合react 使用消息通信

引入websocket依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>配置websocket import org.springframework.context.annotation.Bean; import org.spr…

Highcharts引入

Highcharts是和jQuery一起使用的&#xff0c;所以需要下載好jQuery jQuery下載方式&#xff1a;訪問&#xff1a;http://cdn.staticfile.org/jquery/2.1.4/jquery.min.js&#xff0c;然后全選復制到自己新建的txt文檔中&#xff0c;最后把擴展名改為js。 Highcharts下載方式&…

pytest運行時參數說明,pytest詳解,pytest.ini詳解

一、Pytest簡介 1.pytest是一個非常成熟的全功能的Python測試框架&#xff0c;主要有一下幾個特點&#xff1a; 簡單靈活&#xff0c;容易上手&#xff0c;支持參數化 2.能夠支持簡單的單元測試和復雜的功能測試&#xff0c;還可以用來做selenium、appium等自動化測試&#xf…

使用sqlplus連接oracle,提示ORA-01034和ORA-27101

具體內容如下 PL/SQL Developer 處 登錄時 終端處 登錄時 ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Process ID: 0 Session ID: 0 Serial number: 0 解決方法是執行以下命令 sqlplus /nolog conn / as sysdba startup …

【Hilog】鴻蒙系統日志源碼分析

【Hilog】鴻蒙系統日志源碼分析 Hilog采用C/S結構&#xff0c;Hilogd作為服務端提供日志功能。Client端通過API調用&#xff08;最終通過socket通訊&#xff09;與HiLogd打交道。簡易Block圖如下。 這里主要分析一下。Hilog的讀、寫、壓縮落盤&#xff0c;以及higlog與android…

學術論文GPT源碼解讀:從chatpaper、chatwithpaper到gpt_academic

前言 之前7月中旬&#xff0c;我曾在微博上說準備做“20個LLM大型項目的源碼解讀” 針對這個事&#xff0c;目前的最新情況是 已經做了的&#xff1a;LLaMA、Alpaca、ChatGLM-6B、deepspeedchat、transformer、langchain、langchain-chatglm知識庫準備做的&#xff1a;chatpa…

GitHub上受歡迎的Android UI Library

內容 抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新ViewPager圖表(Chart)菜單(Menu)浮動菜單對話框空白頁滑動刪除手勢操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar選擇器(Picker)跑馬燈日歷時間主題樣式ImageView通知聊…