亚洲av无码乱码国产一区二区,午夜理论片yy44880影院,午夜久久久久久禁播电影,熟睡人妻被讨厌的公侵犯

19
2020/09

項目中如何設(shè)置頁面打印的樣式

發(fā)布時間:2020-09-19 14:08:26
發(fā)布者:會飛的魚
瀏覽量:
0

前端工作中,有時會需要使用打印功能,在打印過程中一般是不會攜帶你頁面中的樣式的,如何保證打印的樣式今天文匯軟件小編來和大家聊一聊。

首先先看這個項目,這里面就有打印,這里我們使用jqprint進行打印。

1 (2).jpg

代碼如下圖,注意  這里的 importCSS這個參數(shù)必須得是true,否則無法使用樣式,默認的打印一般是只會識別出內(nèi)聯(lián)樣式的,所以這里需要注意一下。

image.png

   function a() {

        $("#ddd").jqprint({

            debug: false, //如果是true則可以顯示iframe查看效果(iframe默認高和寬都很小,可以再源碼中調(diào)大),默認是false

            importCSS: true, //true表示引進原來的頁面的css,默認是true。(如果是true,先會找$("link[media=print]"),若沒有會去找$("link")中的css文件)

            printContainer: true, //表示如果原來選擇的對象必須被納入打?。ㄗ⒁猓涸O(shè)置為false可能會打破你的CSS規(guī)則)。

            operaSupport: true //表示如果插件也必須支持歌opera瀏覽器,在這種情況下,它提供了建立一個臨時的打印選項卡。默認是true

        });;

    }

除此之外我們還需要掛載這個dom,另外引入jquery.jqprint.js這個js,還有有些小伙伴在引用的時候控制臺會報Cannot read property 'opera' of undefined的問題,這是你所引用的jquery版本與jquery.jqprint.js的版本不兼容的原因,在這里小編為大家推薦使用jquery-migrate-1.2.1.min.js這個版本的js

1600498756(1).jpg

這樣我們就可以把自己頁面的樣式在打印時打印出來了

1600499150(1).jpg

但是這樣會存在一個問題,因為我們只想要打印部分內(nèi)容,但是在打印過程中,他的其他的樣式還會在,如上圖,我們想要在打印的時候內(nèi)容居中,這里我們就需要重新設(shè)置樣式,這里有幾種辦法。

第一種 ,直接不用而jqprint,全部使用原生js的,小編不建議這樣寫,因為一方面原生js編寫代碼量會比較大而且有瀏覽器兼容問題,容錯率比較低,前面的代碼出了問題,后面的代碼執(zhí)行不了。

第二種 ,使用內(nèi)聯(lián)樣式,但是在html添加后整體的頁面樣式也會改動,小編也不推薦。

第三種,利用css的@media print屬性來設(shè)置打印時的樣式,優(yōu)點,  頁面剛加載時和打印時都會按照不同的樣式編譯,缺點,打印結(jié)束后,不會再重新加載原來的瀏覽器樣式,導致頁面整體崩潰,小編也不怎么推薦。

第四種,單獨再寫一個文件,這個文件存放所有的打印時的樣式,并且只有在打印時才會調(diào)用,小編比較推薦。

上圖之所以會出現(xiàn)這種樣式,主要是我們設(shè)定了打印區(qū)域只有右邊所綁定的元素,但是這個綁定的元素有margin值,如下圖,這是瀏覽器代碼

1600499828(1).jpg

,所以我們只要設(shè)定在打印時加載的樣式表去掉這個margin值就好了,如下圖

1600500120(1).jpg

我們只需要在對應的樣式表加上media="print",就可以了,然后修改對應的樣式,這樣頁面就能按照我們需要的樣式進行打印了。

1600500468(1).jpg


頁面在打印時link midia的屬性比@media print的級別高,而且還可以設(shè)置不同的樣式瀏覽器也不會崩潰,所以小編推薦這個方法。

1600500554(1).jpg

1600500597(1).jpg

好了,今天就是小編分享的文章,你學會了嗎,如想了解更多就來文匯軟件看看吧。

關(guān)鍵詞:
返回列表