Bootstrap 3.x 打印問題


最近,同事需要調用print()來打印頁面,但是發現打印預覽頁面上,背景色無法顯示,文字總是顯示為黑色,非常奇怪。我測試了一段如下的代碼,發現打印預覽時的確無法顯示背景色。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Regonline</title>
    <link href="css/bootstrap.css" rel="stylesheet" />
    <link href="css/font-awesome.min.css" rel="stylesheet" />
</head>

<body>

    <style>

        .main{

            overflow: hidden;
            padding: 40px;
        }

        .one, .two, .three{

            float: left;

            height: 40px;
        }

        .one{

            width: 40%;
            background-color: red;
        }

        .two{

            width: 30%;
            background-color: green;
        }

        .three{

            width: 30%;
            background-color: pink;
        }


    </style>
        
        <div class="main">
            <div class="one"></div>
            <div class="two"></div>
            <div class="three"></div>
        </div>
</body>

</html>

 比較奇怪的是,如果我刪除bootstrap的樣式引用,就可以正常打印預覽了。想來必定是bootstrap3 設置了@media print相關屬性導致。果然,翻開源碼,發現如下代碼:

@media print {
  * {
    color: #000 !important;
    text-shadow: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="javascript:"]:after,
  a[href^="#"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;

    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  select {
    background: #fff !important;
  }
  .navbar {
    display: none;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}

 注意代碼里面的 color:#000 !important; 以及 background-color:transparent !important; 。它表示打印時,頁面中的文字都為黑色,並且背景色都設置為透明。因為有了這樣的樣式,我們的背景色就打印

不出來了。去掉這兩段代碼,一切OK!

值得一提的說:如果頁面中有超鏈接,打印時會顯示超鏈接的地址,這樣比較難看。我們刪除對應的樣式即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM