91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[轉(zhuǎn)帖]window.print() 前端實(shí)現(xiàn)網(wǎng)頁打印詳解

liguoquan
2023年7月4日 16:43 本文熱度 1404
:window.print() 前端實(shí)現(xiàn)網(wǎng)頁打印詳解


window.print() 前端實(shí)現(xiàn)網(wǎng)頁打印詳解


目錄


前言


 一、print()方法


 二、打印樣式


2.1使用打印樣式表


2.2使用媒介查詢


2.3內(nèi)聯(lián)樣式使用media屬性


2.4在css中使用@import引入打印樣式表


三、打印指定區(qū)域部分內(nèi)容


3.1方法一


3.2方法二


3.3方法三


四、強(qiáng)制插入分頁


4.1page-break-before(指定元素前添加分頁符)


4.2page-break-after(指定元素后添加分頁符)


 4.3page-break-inside(用于設(shè)置是否在指定元素中插入分頁符)


4.4注意


 五、設(shè)置打印布局(橫向、縱向、邊距)


六、去除瀏覽器默認(rèn)頁眉頁腳


七、打印方法封裝


 注意:如果有高級的玩法主要有以下


前言

print作為瀏覽已經(jīng)比較成熟的技術(shù)可以經(jīng)常被用來打印頁面的部分內(nèi)容,我們可以在MDN上查看到相關(guān)的簡單介紹。


 一、print()方法

print() 方法用于打印當(dāng)前窗口的內(nèi)容。調(diào)用 print() 方法會(huì)產(chǎn)生一個(gè)打印預(yù)覽彈框,讓用戶可以設(shè)置打印請求。最簡單的打印就是直接調(diào)用window.print(),當(dāng)然用 document.execCommand('print') 也可以達(dá)到同樣的效果。默認(rèn)打印頁面中body里的所有內(nèi)容。


<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <title>printDemo</title>

</head>

<body>

  <input type="button" value="打印此頁面" onclick="printpage()" />

  <div>內(nèi)容</div>

  <script>

    function printpage() {

      window.print()

    }

  </script>

</body>

</html>



 二、打印樣式

直接調(diào)用print()方法去打印網(wǎng)頁內(nèi)容,我們會(huì)發(fā)現(xiàn),事先調(diào)整好的布局和樣式都沒法實(shí)現(xiàn),那么有哪些方法可以幫助我們改善打印的用戶體驗(yàn)?zāi)兀?/p>


2.1使用打印樣式表

配置一份打印樣式表print.css,引入到HTML文檔,在 <link> 上加上一個(gè) media="print" 來標(biāo)識(shí)這是打印機(jī)才會(huì)應(yīng)用的樣式表,這樣打印的時(shí)候,就會(huì)默認(rèn)將該樣式表應(yīng)用到文檔中


<link href="/path/print.css" media="print" rel="stylesheet" />

2.2使用媒介查詢

當(dāng)我們要修改的樣式?jīng)]有很多的時(shí)候,其實(shí)完全不需要重新寫個(gè)樣式表,只要寫上一個(gè)媒介查詢也可以達(dá)到同樣的效果,如:


@media print {

  h1 {

    font-size: 20px;

    color: red;

  }

}

2.3內(nèi)聯(lián)樣式使用media屬性

<style type="text/css" media="print">

   // 打印樣式

</style>

2.4在css中使用@import引入打印樣式表

@import url("/path/print.css") print;

三、打印指定區(qū)域部分內(nèi)容

3.1方法一

在需要打印的正文內(nèi)容所對應(yīng)的html開始處加上 <!--startprint--> 標(biāo)識(shí),結(jié)尾處加上 <!--endprint--> 標(biāo)識(shí),截取打印標(biāo)識(shí)之間的內(nèi)容替換body的內(nèi)容,調(diào)用打印print()方法。


<body>

  <input type="button" value="打印此頁面" onclick="printpage()" />

 

  <!--startprint-->

  <div id="printContent">打印內(nèi)容</div>

  <!--endprint-->

 

  <script>

    function printpage() {

      let oldStr = window.document.body.innerHTML; // 獲取body的內(nèi)容

      let start = "<!--startprint-->"; // 開始打印標(biāo)識(shí), 17個(gè)字符

      let end = "<!--endprint-->"; // 結(jié)束打印標(biāo)識(shí)

      let newStr = oldStr.substr(oldStr.indexOf(start) + 17); // 截取開始打印標(biāo)識(shí)之后的內(nèi)容

      newStr = newStr.substring(0, newStr.indexOf(end)); // 截取開始打印標(biāo)識(shí)和結(jié)束打印標(biāo)識(shí)之間的內(nèi)容

      window.document.body.innerHTML = newStr; // 把需要打印的指定內(nèi)容賦給body

      window.print(); // 調(diào)用瀏覽器的打印功能打印指定區(qū)域

      window.document.body.innerHTML = oldStr; // body替換為原來的內(nèi)容

    }

  </script>

</body>

3.2方法二

將需要打印的內(nèi)容用一個(gè)大的div包裹,打印時(shí)將body的內(nèi)容替換為該div的內(nèi)容,調(diào)用打印print()方法。


<body>

  

  <input type="button" value="打印此頁面" onclick="printpage()" />

  <div id="printContent">打印內(nèi)容</div>

 

  <script>

    function printpage() {

      let newstr = document.getElementById("printContent").innerHTML;

      let oldstr = document.body.innerHTML;

      document.body.innerHTML = newstr;

      window.print();

      document.body.innerHTML = oldstr;

      return false;

    }

  </script>

</body>

3.3方法三

有兩個(gè)事件可以監(jiān)聽到到打印事件,一個(gè)是onbeforeprint(),一個(gè)是onafterprint(),分別表示打印事件觸發(fā)前后。 


檢測打印請求,提供一個(gè)打印前的處理事件onbeforeprint() 將一些不需要打印的元素隱藏,和打印后的處理事件 onafterprint()放開隱藏的元素。


    window.onbeforeprint = function(event) {

      //將一些不需要打印的元素隱藏

    };

    window.onafterprint = function(event) {

      //放開隱藏的元素

    };

四、強(qiáng)制插入分頁

4.1page-break-before(指定元素前添加分頁符)



/* 在h1元素前始終插入分頁符 */

@media print {

    h1 {page-break-before: always;}

}

4.2page-break-after(指定元素后添加分頁符)



/* 在 .footer 元素后始終插入分頁符 */

@media print {

    .footer {page-break-after: always;}

}

 4.3page-break-inside(用于設(shè)置是否在指定元素中插入分頁符)



/* 避免在 <pre> 與 <blockquote> 元素中插入分頁符 */

@media print {

    pre, blockquote {page-break-inside: avoid;}

}

 


4.4注意

不能對絕對定位的元素使用以上三種分頁屬性。

請盡可能少地使用分頁屬性,并且避免在表格、浮動(dòng)元素、帶有邊框的塊元素中使用分頁屬性。

 五、設(shè)置打印布局(橫向、縱向、邊距)

 @media print {

    @page {

      /* 縱向 */

      size: portrait; 

 

      /* 橫向 */

      size: landscape;

 

      /* 邊距 上右下左 */

      margin: 1cm 2cm 1cm 2cm;

    }

  }

六、去除瀏覽器默認(rèn)頁眉頁腳

頁眉打印默認(rèn)有頁眉頁腳信息,展現(xiàn)到頁面外邊距范圍,我們可以通過去除頁面模型page的外邊距,使得內(nèi)容不會(huì)延伸到頁面的邊緣,再通過設(shè)置 body 元素的 margin 來保證 A4 紙打印出來的頁面帶有外邊距


@media print {

  @page {

    margin: 0;

  }

  body {

    margin: 1cm;

  }

}

七、打印方法封裝

 window.print();

 注意:如果有高級的玩法主要有以下

不想打印頁面的某某某dom,按鈕啦啥的,但是又必須在頁面上展示,只需在


方法1:@media print 媒體查詢里面讓對應(yīng)元素隱藏 display:none;


方法2:在js里面讓他內(nèi)容先變空等等


原理就是在頁面不展示這個(gè)dom

https://blog.csdn.net/qq_59747594/article/details/129387389


該文章在 2023/7/4 16:43:04 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 福利视屏网站 | 国产免费人成 | 日韩在线精品一区 | 日韩ac| 国精品一区二 | 国产日韩无 | 欧美在线观看二区 | 成人伊人222| 日本伊人网 | 三级国产| 国产日韩欧美亚 | 18欧美乱大| 国产自产25区 | 乱伦中文综合国产 | 日本三级国产综合 | 国产欧美一区二区精 | 国产极品视觉盛宴 | 成人国产在线 | 福利一区二区 | 国产免费夫妻高 | 日本精品a在线观看 | 国产综合 | 91极品蜜桃臀 | 日产亚洲一| 国产精品视频免费 | 日本强伦姧人 | 老司机精品导航 | 国产丝袜熟女91 | 欧洲vodafon | 日韩性爱视频 | 日本欧美大码aⅴ | 国产干b| 欧美日韩四区在线 | 人人澡人人澡人人 | 日本福利写真影院 | 国产一区二区免费 | 国产午夜福利91 | 乱伦免费国产高 | 国产卡二卡三卡四卡 | 91高清视频 | 日韩女优影音先 |