日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

打印樣式CSS的技巧和要點

系統 2865 0

不經過任何處理而直接打印網站上的頁面會得到一個不理想的效果。我們WEB開發人員可以簡單的采用幾個要點來使之達到較為合適的效果:

  • 使用響應式布局設置打印的效果
  • 打印背景圖片和顏色,在合適的時候
  • 添加顯示的網址或頁面鏈接,以供參考
  • 使用css filter 提高打印的圖形效果

?

針對打印的樣式,而不是屏幕顯示樣式

首先,我們需要使用媒體查詢(media query)針對 打印樣式設置。

        @media print {

}
      

?

重新針對打印寫CSS樣式是沒有必要的,我們只需要針對差異設置打印的樣式覆蓋掉之前的默認樣式。大多數的瀏覽器會自動根據打印更改顏色,以節省打印原料,但是我們還是盡可能的手工設置一下。為了達到最佳效果,使顏色清晰明了。我們至少需要包含一下基本的打印樣式。

        @media print { body { color: #000; background: #fff; } }
      

?

對于打印,大多數情況下我們不需要打印整個頁面,只需要打印一個簡潔的能夠突出需要信息的頁面,那么我們將不相關的部分隱藏掉(如:導航條、背景圖片)。

        /* Default styles */

h1 {
   color: #fff;
   background: url(banner.jpg);
}

@media print {
   h1 {
      color: #000;
      background: none;
   }

   nav, aside {
      display: none;
   }
}
      

?

在編寫打印樣式表的時候,你要注意要使用厘米或者英寸作為單位而不是屏幕像素單位,實際的單位對打印非常有用。為了保證打印樣式有用,寫CSS樣式使打印的內容距離紙張邊緣,看起來更好,需要使用 @page 這個語法:

        @media print {
   h1 {
      color: #000;
      background: none;
   }

   nav, aside {
      display: none;
   }

   body, article {
      width: 100%;
      margin: 0;
      padding: 0;
   }

   @page {
      margin: 2cm;
   }
}
      

?

為了保證不被跨頁打印,如一個標題和內容在頁面底部被分開:

        h2, h3 { page-break-after: avoid; }
      

?

另一中情況是要防止圖片過寬而超出紙張邊緣:

        img {
   max-width: 100% !important;
}
      

?

第三個要點是確保 articles 文章標簽的內容,在新的一頁開始:

        article {
   page-break-before: always;
}
      

?

最后,還要注意列表和圖片不被分開在不同的頁:

        ul, img {
   page-break-inside: avoid;
}
      

?

盡管這些還不完美,不過這是一個良好的開始

?

背景圖片和顏色

對于一些網站,顏色和背景圖還是非常必要需要遵循的。如果用戶是在 webkit 內核瀏覽器上打印的話,我們可以強制打印機打印屏幕上所看到的顏色(即強制在打印頁面上出現任何的背景圖和顏色),一般來說彩色打印機可以做到這點,我們需要一個單獨的媒體查詢:

        @media print and (color) {
   * {
      -webkit-print-color-adjust: exact;
      print-color-adjust: exact;
   }
}
      

?

遺憾的是,這不能馬上應用于firefox opera 和IE.

?

擴展打印樣式里的超鏈接

如果直接打印,超鏈接將只是一點文字,而不會出現鏈接的網址,這樣來說,是沒有意義的。我們可以將url鏈接展示在打印的頁面上,我們可以使用:after偽類來實現而不影響周圍的元素布局:

        @media print {
   article a {
      font-weight: bolder;
      text-decoration: none;
   }

   article a[href^=http]:after {
      content:" <" attr(href) "> ";
   }
}
      

?

看下面這是HTML:

        <p>You’ve explored this <a href="/blog">website</a>; now it’s time to <a >read other Web development documentation</a>.</p>
      

?

下面是顯示的效果:

?

其中一個問題是,打印頁面上的錨文本和圖像鏈接也將擴大。我們可以很好的用CSS規則修復

        article a[href^="#"]:after {
   content: "";
}
      

?

鏈接周圍圖像是比較麻煩的,理想的情況是圖像周圍的鏈接將有一個class.

        $a:after > img {
   content: "";
}
      

?

CSS4選擇器實現將很簡單:

        a:not(:local-link):after {
   content:" <" attr(href) "> ";
}
      

?

所有這些方法都假定用戶將繼續通過手工輸入網址。 一個更好的解決方案是通過提供匹配的QR碼的數字版本的頁面更容易訪問。

?

打印鏈接二維碼使之更容易訪問

如下圖: 我們需要使用谷歌 圖形API來實現:

  • 我們希望谷歌提供的圖表信息(? qr ?,在我們的例子中);
  • 呈現大小的的QR印記,以像素為單位;
  • URL進行編碼;
  • 使用的字符編碼形式。

通常我們會在頁面頂部的一個標題元素關聯的URL:

        <header>
<h1>Lizabeth’s Salon</h1>
<h2>Providing Intellectual Stimulation Online Since 2001</h1>
</header>
      

?

為了創造預期的打印結果,我們將提供足夠的間距給H1用來放置二維碼。因為這個二維碼需要增加到每個頁面。我們需要增加一條CSS規則:

        @media print {
   header h1:after {
      content: url(https://chart.googleapis.com/chart?cht=qr&chs=150x150&chl=http://yourdomain.com&choe=UTF-8);
      position: absolute;
      right: 0;
      top: 0;
   }
}
      

?

這個方法的缺點是使開發者每個元素都請求一個API。如果你的主機是PHP,則可以自動生成當前頁面的URL:

        @media print {
   h1:after {
      content: url(https://chart.googleapis.com/chart?cht=qr&chs=150x150
&chl=http://<?=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];?>
&choe=UTF-8);
      position: absolute;
      right: 0;
      top: 0;
   }
}
      

?

給wordpress的樣式:

        @media print {
   h1:after {
      content: url(https://chart.googleapis.com/chart?cht=qr&chs=150x150
&chl=http://<?phpthe_permalink();?>&choe=UTF-8);
      position: absolute;
      right: 0;
      top: 0;
   }
}
      

?

使用CSS3 Filter 提高打印的質量

瀏覽器通常會打印出橫幅圖像,特別是如果有問題的旗幟在黑暗的背景是白色的:

        @media print {
   header {
      background: none;
      color: #000;
   }

   header img {
      filter: url(inverse.svg#negative);
      -webkit-filter: invert(100%);
      filter: invert(100%);
   }
}
      

?

CSS3的過濾器做什么,你所期望的 – 在頭圖像反色,變成黑白色,反之亦然 – 但它們只能在Chrome和Safari。?為了彌補Firefox,我們需要一種不同的方法 – 相當于過濾器作為一個單獨的SVG文件寫:

        <svg xmlns="http://www.w3.org/2000/svg">
<filter id="negative">
<feColorMatrix values="-1 0 0 0 1
0 -1 0 0 1
0 0 -1 0 1
0 0 0 1 0" />
</filter>
</svg>
      

?

從理論上講,你可以使用一個CSS sprite 之間進行切換不同版本的打印的標志,但是這將意味著增加一倍的文件大小可能沒有什么好處。?相反,我建議使用CSS過濾器(和SVG當量,為 Firefox)的反轉圖像之前,打印的頁面: 印刷兩種形式的標志(即α-蒙面PNG或純黑色背景)的結果是:

?

?

總結

由于打印不方便跟蹤,而且缺乏重視。在WEB開發中也往往被忽略,大多數時候我們只閱讀線上的網頁,而不是打印出來。 另一方面即使人們只是偶爾需要打印的東西從網站,這將是理想的,如果頁面設計適合的打印機,就像現代的網站適應各種屏幕尺寸和設備。?打印的自適應設計, 可用性和可訪問性和Web開發的重要組成部分,同樣應考慮的另一個方面。 處理打印自適應設計的另一個方面,我們實現更多的網站用戶的需求-并在同一時間,節省墨水,紙張和其他資源,所有這些都是重要的方面 可持續發展 設計 ?。

?

轉載: cocss ? 打印樣式CSS的技巧和要點

?

?

打印樣式CSS的技巧和要點


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 岳池县| 大埔区| 保定市| 苍山县| 闽清县| 龙里县| 临湘市| 丰都县| 合川市| 江孜县| 峨眉山市| 治县。| 浦北县| 宁都县| 襄汾县| 开封县| 舟山市| 永济市| 札达县| 嘉祥县| 鄂伦春自治旗| 平山县| 武邑县| 巫溪县| 亚东县| 平泉县| 长汀县| 兖州市| 枣庄市| 正安县| 黑山县| 西贡区| 霍林郭勒市| 武功县| 民勤县| 城市| 成安县| 临洮县| 加查县| 确山县| 临泉县|