在網站的一些應用中需要提供用戶直接打印頁面的功能,最明顯的就是電子優惠券,商家根據網站提供的模板輸入內容,然後生成優惠券頁面,用戶打印這個頁面即是優惠券。
當然最優的做法是根據這個頁面生成一個圖片文件,用戶下載這個圖片再去打印,打印的效果就不會受浏覽器的設置而受影響打印出來的效果。
但如果由於一些原因,為了快速或者節約成本,不去將頁面存為圖片文件的操作,那麼就只有直接將Html頁面直接打印下來,這樣就需要在對頁面的設計中有一些額外的要求,這裡提出兩個地方需要注意:
1.對style標簽的屬性設置:
<style type=”text/CSS” media=”print”>
這裡表示該style內引入或者定義的樣式屬性僅僅在打印的時候使用,這裡提醒一下,如果沒有設置media屬性,那麼定義的樣式將在浏覽器和打印時都起效,所以建議將類似這樣的樣式放在所有常規樣式之後。比如我們希望在打印出來的頁面上有一行“打印與雅虎口碑網”,但在浏覽器中並不現實:
<p class=”printTitle”>打印與雅虎口碑網</p>
那麼我們就可以在統一樣式中設置.printTitle{display:none;},而在後面的media為”print”的樣式中設置為.printTitle{display:block;}。在定義的打印樣式並不是在打印時的優先級會高於常規定義的樣式,所以再次建議將打印樣式放在所有常規樣式之後。
2.在頁面打印的時候浏覽器的設置會對打印的效果有影響,在IE中的“工具”–“Internet選項”–“高級”中有一個“打印背景顏色和圖像”,類似的在Firefox中“文件”–“頁面設置”中有一個“打印背景顏色和圖像”,當這個選項被選中的時候,頁面中的背景顏色和圖片都可以打印出來(有些不標准的IE內核浏覽器似乎有些問題,背景顏色可以打印出來,但是背景圖片不行),如果沒有選中則背景顏色和圖片都無法打印出來,所以為了屏蔽用戶不同的浏覽器和浏覽器設置,我建議兩點,第一是在用背景色填充的區域作為分界的地方加上1px的邊框,顏色和背景色一樣,這樣在浏覽器中看不出來變化,而在打印的時候即使用戶的設置導致背景色無法打印出來也可以有一個邊框來作為分割,最大層的上保留了頁面格局;第二是對所有必不可少的圖片都使用<img/>標簽,這樣無論用戶浏覽器怎麼設置都可以將這些圖片打印出來,可能這樣與平時一些頁面設計方式不同,但為了統一打印的效果,也只要讓步了。
我這裡簡單的提出了一些在實際運用中遇到的問題,如果大家還有什麼新的問題和想法,可提出來共同談論,在這裡先拋磚了;