在使用jquery.PrintArea.js打印局部网页样式的时候,发现样式打印不出来,在网上找了好多资料,整理一下分享给大家

一、先看看css的引用文件方式

  1、直接在内部的元素中使用”style”属性来定义样式,比如:<div style=”width:800px;”></div>

  2、在<head>元素中使用”style”元素来指定

  3、使用<link>元素链接到外部的样式文件,比如:<link rel=”stylesheet” type=”text/css” href=”default.css”>

  这三种是比较常见的方式

二、第一种方式:

  直接在内部的元素中使用”style”属性来定义样式,然后调用printArea()函数,可打印全屏,可打印局部,样式都是起作用的,代码如下:

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>index</title>
</head>
<body>
    <div>
        <div id="printArea">
            <div style="font-size:18px;color:#ff0000;">......文本打印区域......</div>
            <div style="font-size:24px;color:#ff0000;">......文本打印区域......</div>
            <div style="font-size:36px;color:#ff0000;">......文本打印区域......</div>
        </div>
        <br>
        <br>
        <input id="btnPrint" type="button" value="打印文本区域" />
        <input id="btnPrintFull" type="button" value="全屏打印" />
    </div>
    <script>
        $("#btnPrint").click(function () {
            $("#printArea").printArea();
        });
        $("#btnPrintFull").click(function () {
            $("body").printArea();
        });
    </script>
    </body>

第二种方式:

在<head>元素中使用”style”元素来指定,你会发现打印局部网页预览的时候,样式并不起作用,在网上找到得资料是,在<style type="text/css" media="print"></style>

但是你会发现,这样做之后,样式并不起效,不知道是我用错了还是什么,贴上代码

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>index</title>
    <style type="text/css" media="print">
        .content{font-size:36px;color:#ff0000;}
    </style>
</head>
<body>
    <div>
        <div id="printArea">
            <div class="content">......文本打印区域......</div>
            <div class="content">......文本打印区域......</div>
            <div class="content">......文本打印区域......</div>
        </div>
        <br>
        <br>
        <input id="btnPrint" type="button" value="打印文本区域" />
        <input id="btnPrintFull" type="button" value="全屏打印" />
    </div>
    <script>
        $("#btnPrint").click(function () {
            $("#printArea").printArea();
        });
        $("#btnPrintFull").click(function () {
            $("body").printArea();
        });
    </script>
    </body>后来弄了好久,才摸索出了解决办法,直接贴上代码
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>index</title>
</head>
<body>
    <div>
        <div id="printArea">
            <style type="text/css">
                .content { font-size: 36px; color: #ff0000; }
            </style>
            <div class="content">......文本打印区域......</div>
            <div class="content">......文本打印区域......</div>
            <div class="content">......文本打印区域......</div>
        </div>
        <br>
        <br>
        <input id="btnPrint" type="button" value="打印文本区域" />
        <input id="btnPrintFull" type="button" value="全屏打印" />
    </div>
    <script>
        $("#btnPrint").click(function () {
            $("#printArea").printArea();
        });
        $("#btnPrintFull").click(function () {
            $("body").printArea();
        });
    </script>
    </body>

  把你要打印那块区域的样式放到你要打印的那块区域里面,打印的时候样式就有效了,不需要加media="print"

第三种方式和第二种方式是一样的道理