Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8773

指定したエリアだけを印刷する処理

$
0
0

こんな場面で使えます。

 例えば、ユーザーに何らかのアンケートに回答をしてもらうサイトで
ユーザーが自分の回答結果の部分だけを印刷したい場合などに使えます。
普通の印刷では余計な箇所も入ってくるので、必要なエリアだけを印刷できるようにします。
※実際の挙動が確認できるwebアプリのURLを一番下に載せてますので、そちらもご確認ください。
11printImg1.jpg

実装の流れ

 1:印刷ボタンを作成
 2:プリントしたいエリアの取得の指定
 3:2のエリア全体のコピーを作成
 4:3以外を非表示にする処理を作成
 5:印刷ダイアログの呼び出し➡︎印刷する
 6:3で作成した印刷用エリアを削除 ・ 4で非表示にした要素を表示する

実装スタート

1:印刷ボタンを作成

print.html
<buttonclass="print-btn"> <span>結果だけを印刷する</span></button>

2:プリントしたいエリアの取得

 プリントしたい範囲を以下の「divタグ」で囲む。

print.html
<divclass="print-area"> <!-- この中に要素を入れる。印刷しないものは、後で非表示にする処理で消します。 --></div>

3:2のエリア全体のコピーを作成

 1:プリントしたい範囲を取得
 2:プリント用の要素「#print」を作成。
 3:2の子要素に1を入れる。

print.js
$(function(){//個別印刷ボタンをクリックした時$('.print-btn').on('click',function(){//プリントしたいエリアの取得varprintArea=document.getElementsByClassName("print-area");//プリント用の要素「#print」を作成し、上で取得したprintAreaをその子要素に入れる。$('body').append('<div id="print" class="printBc"></div>');$(printArea).clone().appendTo('#print');//この下に、以降の処理が入ります。});});

4:3以外を非表示にする処理を作成

print.js
//プリントしたいエリア意外に、非表示のcssが付与されたclassを追加$('body > :not(#print)').addClass('print-off');
print.css
.print-off{ display:none;}

5:印刷ダイアログの呼び出し➡︎印刷する

print.js
window.print();

6:3で作成した印刷用エリアを削除 ・ 4で非表示にした要素を表示して終了です。

print.js
//window.print()の実行後、作成した「#print」と、非表示用のclass「print-off」を削除$('#print').remove();$('.print-off').removeClass('print-off');

終わりに。

いかがでしょうか。
印刷したいエリアだけを取り出せるのでユーザーにとって不要なエリアが無くなり使い勝手の良いページが作成できると思います。
自作の家庭用備蓄をチェックできるアプリでも、チェックした備蓄情報を印刷できるようにしてありますので
良かったら作業の合間にそちらを見ていただけると具体的な挙動を確認していただけます。
https://saku2stockcheck.herokuapp.com/

では、最後まで見ていただいてありがとうございました!


Viewing all articles
Browse latest Browse all 8773

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>