欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

liguoquan
2023年7月4日 16:43 本文熱度 690
: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() 方法會產(chǎn)生一個打印預(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)容,我們會發(fā)現(xiàn),事先調(diào)整好的布局和樣式都沒法實(shí)現(xiàn),那么有哪些方法可以幫助我們改善打印的用戶體驗(yàn)?zāi)兀?/p>


2.1使用打印樣式表

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


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

2.2使用媒介查詢

當(dāng)我們要修改的樣式?jīng)]有很多的時候,其實(shí)完全不需要重新寫個樣式表,只要寫上一個媒介查詢也可以達(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)識,結(jié)尾處加上 <!--endprint--> 標(biāo)識,截取打印標(biāo)識之間的內(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)識, 17個字符

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

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

      newStr = newStr.substring(0, newStr.indexOf(end)); // 截取開始打印標(biāo)識和結(jié)束打印標(biāo)識之間的內(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)容用一個大的div包裹,打印時將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方法三

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


檢測打印請求,提供一個打印前的處理事件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注意

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

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

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

 @media print {

    @page {

      /* 縱向 */

      size: portrait; 

 

      /* 橫向 */

      size: landscape;

 

      /* 邊距 上右下左 */

      margin: 1cm 2cm 1cm 2cm;

    }

  }

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

頁眉打印默認(rèn)有頁眉頁腳信息,展現(xiàn)到頁面外邊距范圍,我們可以通過去除頁面模型page的外邊距,使得內(nèi)容不會延伸到頁面的邊緣,再通過設(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)容先變空等等


原理就是在頁面不展示這個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ì)、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved