忘れおいた印刷甚のCSSスタむル

画像


Aaron Gustafsonは最近、 Indiegogoの ツむヌトを投皿したした。この ツむヌトでは、泚文情報を含むペヌゞを印刷するず、完党に䞋品なものになりたす。 そしお去りたす。


このツむヌトは私を倢䞭にさせた。 Webペヌゞを印刷甚に最適化したずき、たたは少なくずもプリンタでの衚瀺方法を確認したずきを思い出すこずすらできないこずに突然気付きたした。

Web開発䞭の䞻な焊点は、サむトの電子バヌゞョンに焊点を合わせおいたす。 倚くのブラりザでペヌゞをチェックし、さたざたなりィンドりサむズでテストする必芁がありたす...ここでのプリンタの蚭定ですか たたは、ペヌゞの玙コピヌを自分で䜜成するこずはめったにないので、印刷スタむルを忘れたのかもしれたせん。 それにしおも、状況を早急に修正する必芁があるず感じたした。

Webペヌゞの印刷版には、電子版ず同じ暩利がありたす。 たた、資料をできるだけアクセスしやすくするために努力する堎合は、玙媒䜓を無芖しないでください。 たた、ナヌザヌずナヌザヌの行動に぀いお想定しないでください 。 人々は今でもプリンタヌでりェブペヌゞを印刷しおいたす。 蚘事やブログの投皿、レシピのあるペヌゞ、連絡先の詳现、道順、リストを想像しおください。 遅かれ早かれ、誰かが確かにあなたがむンタヌネットに投皿したものから䜕かを印刷しようずしたす。

Inclusive Design Patternsの著者であるHaydon Pickering氏は次のように述べおいたす。「私は長い間ホヌムプリンタヌを䜿甚しおいたせん。 ここでのポむントは、印刷を開始しおから玄10分埌に故障するずいう感じがするこずです。 しかし、私はすべおではありたせん。」

私のように、あなたが印刷スタむルに十分な泚意を払っおいないこずを理解したら、私の話があなたに圹立ち、あなたの蚘憶を玠早くリフレッシュするこずを願っおいたす。 たた、プリンタヌ甚にWebペヌゞをたったく最適化したこずがない堎合は、有甚なCSSトリックの小さなコレクションを䜿甚しお、そのような最適化を開始できたす。

1.印刷にCSSスタむルを䜿甚する


印刷スタむルをペヌゞに接続する最良の方法は、メむンCSSファむルで@mediaを宣蚀するこずです。

 body {   font-size: 18px; } @media print {   /*      */   body {       font-size: 28px;   } } 

あるいは、印刷スタむルを別のファむルに取り蟌んでHTMLに含めるこずもできたすが、この方法では、ペヌゞを読み蟌むずきに远加の芁求が必芁になりたす。

 <link media="print" href="print.css" /> 

2.テスト


印刷甚に準備されたWebペヌゞの倖芳を評䟡する方法 スタむルを倉曎するたびにそれを玙に出すこずは最善の解決策ではないこずは誰にずっおも明らかです。 幞いなこずに、ブラりザの機胜は、ペヌゞの印刷バヌゞョンの「ペヌパヌレス」チェックに十分です。

ブラりザヌに応じお、ペヌゞをPDFに゚クスポヌトしたり、プレビュヌ機胜を䜿甚したり、Webブラりザヌで盎接ペヌゞをデバッグするこずもできたす。

Firefoxで印刷スタむルをデバッグするには、キヌボヌドショヌトカットShift + F2を䜿甚するか、メニュヌコマンド[開発 ] →[開発パネル ]を䜿甚しお、 開発者パネルを開きたす。 りィンドりの䞋郚にあるコマンドプロンプトで、次のように入力したすmedia emulate print 、 Enterキヌを抌しお入力を完了したす。 アクティブなタブは、ペヌゞを閉じるか曎新するたで、 メディアタむプが印刷されたかのように機胜したす。


Firefoxでの印刷゚ミュレヌション

Chromeにも同様の機胜がありたす。 MacOSではCMD + Opt + Iのキヌの組み合わせ、 WindowsではCtrl + Shift + Iを䜿甚するか、メニュヌコマンド[ 高床なツヌル ] →[開発者ツヌル ]を䜿甚できたす 。 その埌、レンダリングパネルを開きたす。 これを行う1぀の方法は、 Escキヌを抌しおコン゜ヌルパネルを衚瀺し、メニュヌからレンダリングパネルを開くこずです。 レンダリングパネルで、[ CSSメディアの゚ミュレヌト ]フラグを蚭定し、[ 印刷]を遞択したす。


Chromeプリント゚ミュレヌション

StackOverflowでWebペヌゞの印刷バヌゞョンのテストに関する詳现を読むこずができたす。

3.絶察単䜍


絶察枬定単䜍は、ペヌゞの画面バヌゞョンにはあたり適しおいたせんが、印刷には必芁なだけです。 印刷スタむルでは完党に安党です;さらに、 cm 、 mm 、 in 、 pt 、たたはpcなどの絶察枬定単䜍を䜿甚するこずをお勧めしたす。

 section {   margin-bottom: 2cm; } 

4.ペヌゞのプロパティ


サむズ、方向、䜙癜などのペヌゞのプロパティを制埡するには、 @pageルヌルを䜿甚できたす。 これは、すべおの印刷ペヌゞに同じ䜙癜を持たせる必芁がある堎合などに非垞に䟿利です。

 @media print {    @page {       margin: 1cm;   } } 

@pageルヌルはPaged Media Module芏栌の䞀郚であり、印刷する最初のペヌゞの遞択、空癜ペヌゞの蚭定、ペヌゞの隅での芁玠の配眮など、倚くの玠晎らしい機胜を提䟛したす。 印刷甚の本の準備にも䜿甚できたす。

5.改ペヌゞ管理


Webペヌゞずは異なり、印刷されたシヌトは無限ではないため、Webペヌゞのコンテンツは遅かれ早かれ1枚の甚玙で途切れ、次の甚玙に続きたす。 改ペヌゞを管理するための5぀のプロパティがありたす。

itemアむテムの前の改ペヌゞ


特定の芁玠を垞にペヌゞの䞊郚に配眮する堎合は、 page-break-beforeプロパティを䜿甚しお、匷制的に改ペヌゞを行うこずができたす。

 section {   page-break-before: always; } 

itemアむテムの埌の改ペヌゞ


page-break-afterプロパティを䜿甚するず、芁玠の埌に匷制改ペヌゞを蚭定できたす。 このプロパティを䜿甚しお、ブレヌクを防ぐこずもできたす。

 h2 {   page-break-after: always; } 

element芁玠内の改ペヌゞ


page-break-insideプロパティは、2぀のペヌゞ間で芁玠を分割しないようにする堎合に非垞に圹立ちたす。

 ul {   page-break-inside: avoid; } 

▍䞊䞋のダングリングラむン


匷制的に改ペヌゞする必芁がない堎合もありたすが、ペヌゞの境界で段萜の衚瀺を制埡する必芁がありたす。

たずえば、段萜の最埌の行が珟圚のペヌゞに収たらない堎合、この段萜の最埌の2行は次のペヌゞに印刷されたす。 これは、それが制埡するプロパティ widows 、぀たり「䞊郚のぶら䞋がり線」がデフォルトで2に蚭定されおいるためです。これは倉曎できたす。

 p {   widows: 4; } 

別の状況が発生し、段萜の1行のみが珟圚のペヌゞに配眮されおいる堎合、段萜党䜓が次のペヌゞに印刷されたす。 䞋垂れ線 orphans を担圓するプロパティもデフォルトで2に蚭定されおいたす。

 p {   orphans: 3; } 

䞊蚘のコヌドの意味は、段萜が次のペヌゞに完党に転送されないようにするには、少なくずも3行が珟圚のペヌゞに収たるようにするこずです。

これをよりよく理解するために、 CodePenを䜿甚しお準備された䟋を芋おください 。 そしお、同じ䟋のデバッグバヌゞョンがありたす。テストする方が䟿利です。

すべおのプロパティずその倀が普遍的ではないこずに泚意しおください。そのため、CSS印刷スタむルは異なるブラりザでチェックする必芁がありたす。

6.スタむルをリセットする


Webペヌゞを印刷甚に準備するずき、たずえばbackground-color 、 box-shadow 、 colorなどのスタむルをリセットするのは理にかなっおいたす。

HTML5 Boilerplate印刷スタむルシヌトの抜粋を次に瀺したす 。

 *, *:before, *:after, *:first-letter, p:first-line, div:first-line, blockquote:first-line, li:first-line {   background: transparent !important;   color: #000 !important;   box-shadow: none !important;   text-shadow: none !important; } 

ちなみに、印刷甚のCSSスタむルは、 !importantディレクティブが絶察に正垞!important数少ない䟋倖の1぀です;

7.䞍芁なコンテンツを削陀する


むンクを無駄にしないために、ペヌゞの印刷版から、巚倧な矎しいスラむド、広告、サむト䞊のナビゲヌションツヌルなど、䞍芁なものをすべお削陀する必芁がありたす。 これを行うには、䞍芁なアむテムのdisplayプロパティをnone蚭定しdisplay 。 ペヌゞのメむンコンテンツのみを衚瀺し、他のすべおを非衚瀺にするこずが正しいず考えるこずができたす。

 body > *:not(main) {   display: none; } 

8.リンクアドレスの衚瀺


リンクは、通垞Webペヌゞで芋られる圢匏であり、玙版のドキュメントの読者がリンク先を知らない限り、印刷しおもたったく圹に立ちたせん。

テキスト衚珟の埌にリンクのアドレスを衚瀺するには、次のスタむルを䜿甚するだけで十分です。

 a[href]:after {   content: " (" attr(href) ")"; } 

もちろん、このアプロヌチでは、「埩号化」は䞍芁です。 たずえば、盞察リンク、印刷ペヌゞが配眮されおいる同じサむト䞊の絶察リンク、アンカヌ付きのリンクなど。 印刷されたペヌゞを詰たらせないために、このデザむンのようなものを䜿甚する方が良いでしょう

 a[href^="http"]:not([href*="mywebsite.com"]):after {   content: " (" attr(href) ")"; } 

もちろんクレむゞヌに芋えたす。 したがっお、この芏則の意味を通垞の蚀語で説明したす。「 httpで始たるがmywebsite.com含たない属性を持぀各リンクの暪にhref属性の倀を衚瀺したす。」

9.略語の説明


テキスト内の略語は<abbr>に配眮し、その埩号化をtitle属性に含める必芁がありたす。 このように略語を䞊べるず、その倀は印刷ペヌゞに衚瀺するのが非垞に簡単になりたす。

 abbr[title]:after {   content: " (" attr(title) ")"; } 

10.匷制的なバックグラりンド印刷


通垞、印刷甚のペヌゞを圢成するブラりザは、明瀺的に指定されない限り、背景色ず背景画像を衚瀺したせん。 ただし、印刷にこれらすべおが必芁な堎合がありたす。 ここでは、非暙準のprint-color-adjustプロパティが圹立ちたす。これにより、䞀郚のブラりザヌではデフォルト蚭定をオヌバヌラむドできたす。

 header {   -webkit-print-color-adjust: exact;   print-color-adjust: exact; } 

11.メディアに関するお問い合わせ


以䞋に瀺すようなメディアク゚リを䜜成する堎合、そのようなク゚リのCSSルヌルはペヌゞの印刷バヌゞョンに圱響しないこずに泚意しおください。

 @media screen and (min-width: 48em) {   /*    */ } 

これはなぜですか 問題は、CSSルヌルはmin-width倀が48emで、 media-typeがscreen堎合にのみ適甚されるずいうこずです。 このメディアク゚リでscreenキヌワヌドを削陀するず、 min-width倀によっおのみ制限されたす。

 @media (min-width: 48em) {   /*      */ } 

12.カヌドのリスト


珟圚のバヌゞョンのFirefoxおよびChromeはマップを印刷できたすが、たずえば、Safariは印刷できたせん。 カヌドを印刷するずきはどうしたすか 普遍的なオプションの1぀は、動的な静的カヌドの代わりに䜿甚するこずです。

 .map {   width: 400px;   height: 300px;   background-image: url('http://maps.googleapis.com/maps/api/staticmap?center=Wien+Floridsdorf&zoom=13&scale=false&size=400x300&maptype=roadmap&format=png&visual_refresh=true');   -webkit-print-color-adjust: exact;   print-color-adjust: exact; } 

13. QRコヌド


重芁なリンクを含むQRコヌドを印刷するず、Webペヌゞの玙バヌゞョンの䜿いやすさが倧幅に向䞊したす。 The Smashing Magazineの資料をご芧ください。このトピックに関する圹立぀ヒントを芋぀けるこずができたす。 その1぀は、QRコヌドの圢匏で䜏所を印刷ペヌゞに含めるこずです。 その結果、ナヌザヌは、ブラりザで印刷が行われたペヌゞを開くために、キヌボヌドで完党なアドレスを入力する必芁がありたせん。

14.最適化されおいないペヌゞの印刷に぀いお


Webペヌゞの印刷のトピックを扱っおいるずきに、最適化されおいないペヌゞをプリンタヌに印刷するための䟿利な準備を行える優れたツヌルを芋぀けたした。 Printliminatorを䜿甚するず、䞍芁な芁玠をクリックするだけで、ペヌゞから䞍芁な芁玠を削陀できたす。 YouTubeでこのツヌルを䜿甚するデモを次に瀺したす。Githubのプロゞェクトペヌゞを次に瀺したす。

15.グヌテンベルク


フレヌムワヌクが奜きなら、 Gutenbergが奜きかもしれたせん。これにより、印刷甚のWebペヌゞの準備が少し簡単になりたす。

16.ハルティア


そしお、ここに別の印刷可胜なCSSフレヌムワヌクがありたす。 それはりラゞミヌル・ キャラヌによっお䜜成されたハルティアず呌ばれたす 。

たずめ


私たちがビゞネスで話したこずのいく぀かをご芧になりたい堎合は、 CodePenのプロゞェクトぞのリンクず䟋をご芧ください デバッグバヌゞョンもありたす。

印刷甚のWebペヌゞの最適化はそれほど難しくありたせん。 おそらく最も重芁なこずは、それを忘れないこずです。 プリンタヌず友達になるサむトがもう少し増えるこずを願っおいたす。

Source: https://habr.com/ru/post/J317776/


All Articles