【问题标题】:How to set css @media print styling with jquery如何使用 jquery 设置 css @media 打印样式
【发布时间】:2017-04-16 13:27:22
【问题描述】:

我有一个带有id 的background 的html select 元素,旨在为<div class=”results-area”> 设置背景图像。然后我有一个打印按钮来打印.results-area 的内容。

问题是,当我想打印 .results-area 时,我需要设置打印时要设置的背景图像,如果我使用 CSS @media print,我无法设置应该打印哪个背景的规则(基于用户选择)。

还有其他方法可以实现吗?

HTML

<select id="background">
<option value="url(picture1.jpg)">picture1</option>
<option value="url(picture2.jpg)">picture2</option>
<option value="url(picture3.jpg)">picture3</option>
<option value="url(picture4.jpg)">picture4</option>
<option value="url(picture5.jpg)">picture5</option>
<option value="url(picture6.jpg)">picture6</option>
</select>

<div class=”results-area”>
...
</div>

<a id="printMe" class="btn btn-warning">Print</a>

jQuery

$('#background').change(function () {
    $('.results-area').css("background-image", $(this).val());
})


$('#printMe').click(function () {
 print() 
});

CSS:

@media print {
          .results-area{
              background-image: ??????;
          }
    }

【问题讨论】:

标签: jquery html css


【解决方案1】:

我解决的方法如下。

HTML

我将值更改为数字“1-2-3...”并为每张图片添加了一个类“a-b-c...”

<select id="background">
   <option class="a" value="1">Picture 1</option>
   <option class="b" value="2">Picture 2</option>
   <option class="c" value="3">Picture 3</option>
   <option class="d" value="4">Picture 4</option>
   <option class="e" value="5">Picture 5</option>
   <option class="f" value="6">Picture 6</option>
</select>

<div class=”results-area”>
...
</div>

<a id="printMe" class="btn btn-warning">Print</a>

CSS

使用@media print我为每个班级指定了他自己的background-image

@media print {
   .a {
     background-image: url(image1.jpg) !important;
   }

   .b {
     background-image: url(image2.jpg) !important;
   }

   .c{
     background-image: url(image3.jpg) !important;
   }

   .d{
     background-image: url(image4.jpg) !important;
   }

   .e {
     background-image: url(image5.jpg) !important;
   }

   .f {
     background-image: url(image6.jpg) !important;
   }
}

JQuery

$('#background').change(function () {
    if ($(this).val() === "1") {
    $('.results-area').css("background-image", "url(image1.jpg)");
    replace();
    $('.results-area').addClass("a");
}
else if ($(this).val() === "2") {
    $('.results-area').css("background-image", "url(image2.jpg)");
    replace();
    $('.results-area').addClass("b");
}
else if ($(this).val() === "3") {
    $('.results-area').css("background-image", "url(image3.jpg)");
    replace();
    $('.results-area').addClass("c");
}
else if ($(this).val() === "4") {
    $('.results-area').css("background-image", "url(image4.jpg)");
    replace();
    $('.results-area').addClass("d");
}
else if ($(this).val() === "5") {
    $('.results-area').css("background-image", "url(image5.jpg)");
    replace();
    $('.results-area').addClass("e");
}
else if ($(this).val() === "6") {
    $('.results-area').css("background-image", "url(image6.jpg)");
    replace();
    $('.results-area').addClass("f");
}
else {
    replace();
}
});


function replace() {
    $('.results-area').removeClass("a b c d e f");
};

$('#printMe').click(function () {

        print()
});

这感觉像是一种疯狂的做法,但它确实起到了作用。

我希望这对你也有用!

【讨论】:

    【解决方案2】:

    使用 jquery 设置背景图片,默认设置 background-size:0;,打印媒体设置 background-size: inherit;

    $('select').on('change', function() {
            $('.results-area').css("background-image",'url(\''+this.value+'\')');
        });
    $('#printMe').click(function () {
            window.print();
        });
    
            $('.results-area').css("background-image",'url(\''+$('select')[0].value+'\')');
    .results-area{
      width:225px;
      height:225px;
      background-size: 0;
      border:solid 1px red;
    }
     @media print {
              .results-area{
      background-size: inherit;
              }
        }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select id="selImage">
      <option value="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTBoO6az8tPqavBo9xddKQynhqR8YSt4MUWTouGdFp7bWfxJiyW" selected>bg1</option>
      <option value="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSIo-K6XoQSaPZp_MP_TD4OeIdu229F4TCnZARtoiWvHJmI3iy8">bg2</option>
      
    </select>
    <input type="button" id="printMe" value="print"/>
    <div class="results-area">
      </div>

    【讨论】:

      【解决方案3】:

      给你的&lt;head&gt;添加一个&lt;style&gt;标签并给它一个id:

      <head>
      ...
      <style id="bg-for-print"></style>
      ...
      </head>
      

      然后当你想改变背景图片时,选择那个样式标签并设置合适的背景图片:

      $("#bg-for-print").text(
          "@media print {" +
              ".results-area{" +
                  "background-image: url(" + backgroundUrl + ");" +
              "}" +
          "}"
      );
      

      【讨论】:

        猜你喜欢
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 2021-11-02
        相关资源
        最近更新 更多