|
本文主要講解如何使用 CSS 控制打印樣式。 一、基本概念使用 CSS 可以控制文檔如何正確的顯示在不同的媒介 (Media) 上。其中分頁(yè)媒介 (Paged Media) ,不同于連續(xù)媒介 (Continuous Media),它可以控制文檔內(nèi)容,將其分隔至一個(gè)或多個(gè)不相關(guān)聯(lián)的頁(yè)面 (如:書、幻燈片)。 頁(yè)面 (Page Sheet) 是物理介質(zhì) (如:紙張) 的表面,它包含可打印區(qū)域 (Printable Areas) 和不可打印區(qū)域 (Non-printable Areas)。用戶代理可以調(diào)整文檔內(nèi)容的格式,使其顯示在可打印區(qū)域。
頁(yè)面盒子 (Page Box) 是一個(gè)由長(zhǎng)邊 (Long Edge) 和短邊 (Short Edge) 組成的矩形。長(zhǎng)邊的方向決定了頁(yè)面朝向 (Page Orientation),長(zhǎng)邊是垂直方向,則頁(yè)面朝向?yàn)榭v向 (Portrait Orientation),反之為橫向 (Landscape Orientation)。 CSS 打印無(wú)法指定文檔是否為雙面打印 (Duplex Printing),是否雙面打印應(yīng)該通過(guò)用戶代理指定。不管是否雙面打印,CSS 打印總是包含左頁(yè)和右頁(yè) (分別通過(guò) 二、頁(yè)面模型 (Page Model)和 CSS 盒子模型一樣,頁(yè)面盒子模型由外邊距 (margin)、邊框 (border)、內(nèi)邊距 (padding) 和 內(nèi)容區(qū)域 (content area) 構(gòu)成。
其中內(nèi)容區(qū)域和外邊距有著特殊的功能:
頁(yè)面進(jìn)度 (Page Progression)方向 是文檔被分隔后的頁(yè)面的排列方向。比如:現(xiàn)代中文頁(yè)面進(jìn)度多是從左至右;而古代中文的頁(yè)面進(jìn)度則相反??梢酝ㄟ^(guò)設(shè)置根元素 (root element) 的 頁(yè)面的“第一頁(yè)”是左頁(yè)還是右頁(yè),可以由頁(yè)面進(jìn)度的方向決定,當(dāng)頁(yè)面進(jìn)度方向?yàn)閺淖笾劣視r(shí),第一頁(yè)是右頁(yè);反之為左頁(yè)。(事實(shí)上也可以通過(guò)設(shè)置根元素的 三、引入打印樣式的三種方式1、在 CSS 中使用 @media print {
body {
background-color: white;
}
img {
visibility: hidden;
}
a::after {
content: "(" attr(href) ")"; /* 所有鏈接后顯示鏈接地址 */
}
}2、在 CSS 中使用 @import url("my-print-style.css") print;3、在 HTML 中使用 <link rel="stylesheet" media="print" href="my-print-style.css"> 在 四、使用 @page 使用打印媒介查詢可以自定義很多樣式,當(dāng)希望改變頁(yè)面大小、邊距等,就需要用到 1、頁(yè)面外邊距盒子 (CSS3) 頁(yè)面的外邊距被分成了 16 個(gè)頁(yè)面外邊距盒子。每個(gè)外邊距盒子都有自己的外邊距、邊框、內(nèi)邊距和內(nèi)容區(qū)域。頁(yè)面外邊距盒子用于創(chuàng)建頁(yè)眉和頁(yè)腳,頁(yè)眉和頁(yè)腳是頁(yè)面的一部分,用于補(bǔ)充信息,如頁(yè)碼或標(biāo)題。
頁(yè)面外邊距盒子需要在 @page { /* 頁(yè)面內(nèi)容區(qū)域底部添加一條 1px 的灰線 */
@bottom-left, @bottom-center, @bottom-right {
border-top: 1px solid gray;
} /* 頁(yè)腳中間顯示格式如 "第 3 頁(yè)" 的頁(yè)碼 */
@bottom-center {
content: "第" counter(page) "頁(yè)";
}
}注:常見(jiàn)瀏覽器都不支持該屬性,推薦使用 Prince 2、屬性
在 CSS2.1 中,頁(yè)面上下文中只支持 @page {
size: A4 portrait;
margin: 3.7cm 2.6cm 3.5cm; /* 國(guó)家標(biāo)準(zhǔn)公文頁(yè)邊距 GB/T 9704-2012 */}(2)
3、偽類 頁(yè)面上下文也支持使用偽類,其中支持的偽類有: (1)偽類 需要雙面打印時(shí),通常需要將左頁(yè)和右頁(yè)設(shè)置不同的樣式(如頁(yè)邊距、頁(yè)碼位置)。這時(shí)左頁(yè)和右頁(yè)可以分別用 再次強(qiáng)調(diào),通過(guò) /* 通過(guò)分別設(shè)置左頁(yè)和右頁(yè)不同的左右頁(yè)面距,為裝訂邊留出更多的空間 */@page :left {
margin-left: 2.5cm;
margin-right: 2.7cm;
}
@page :right {
margin-left: 2.7cm;
margin-right: 2.5cm;
}(2)偽類 偽類 @page :first {
margin-top: 10cm; /* 首頁(yè)上頁(yè)邊距設(shè)置為 10cm */}(3)偽類 偽類 h1 {
page-break-before: left; /* 一級(jí)標(biāo)題強(qiáng)制分配到右頁(yè) */}
@page :blank {
@top-center {
content: "這是空白頁(yè)";
}
}注意,空白頁(yè)既可能是左頁(yè),又可能是右頁(yè),設(shè)置左頁(yè)或右頁(yè)的樣式也會(huì)顯示在空白頁(yè)上,如果不希望顯示在空白頁(yè)上,可以清除這些樣式。 h1 { break-before: left;
}
@page :left {
@left-center {
content: "這是左頁(yè)";
}
}
@page :right {
@right-center {
content: "這是右頁(yè)";
}
}
@page :blank {
@left-center, @right-center {
content: none; /* 如果是空白頁(yè)則不顯示 */
}
}五、分頁(yè)
2、
六、實(shí)踐
示例樣式 @media print {
@page {
size: A4 portrait;
margin: 3.7cm 2.6cm 3.5cm;
}
h1 {
page-break-before: always;
}
h1, h2, h3, h4, h5, h6,
thead, tfoot, tr, th, td,
li {
page-break-inside: avoid;
}
body {
background-color: white;
color: black;
}
nav, aside {
display: none;
}
a::after {
content: "(" attr(href) ")";
}
thead, tfoot {
display: table-row-group;
}
} |
|
|
來(lái)自: hncdman > 《print css》