作成者別アーカイブ: AHEntry

CSS3で得する話(3)CSS2.1の表のレイアウト

CSS2.1の表のレイアウトの方法は、(1) border-collapseプロパティで指定するborderの扱いと(2) table-layoutプロパティで指定する表の幅計算の方法で大幅に変わり、かなり複雑です。これを説明する例を作成してみました。次の図は同じXHTMLの表に4通りのレイアウト指定した結果です。

オリジナルHTML
AH Formatterで作成したPDF
表のスタイルを指定するCSS(一部)は次のようになっています。
○[Case 1] table-layout: fixed; border-collapse: collapse
.fixed-1 table {
table-layout: fixed;
margin: 5mm;
padding: 5mm;
border-top: solid 3mm gray;
border-left: solid 3mm gray;
border-bottom: solid 2mm gray;
border-right: solid 2mm gray;
border-collapse :collapse;
}
○[Case 2] table-layout: fixed; border-collapse: separate
.fixed-2 table {
table-layout: fixed;
margin: 5mm;
padding: 5mm;
border-top: solid 3mm gray;
border-left: solid 3mm gray;
border-bottom: solid 2mm gray;
border-right: solid 2mm gray;
border-collapse : separate;
border-spacing:2mm;
}
○[Case 3] table-layout: auto; border-collapse: collapse
.auto-1 table {
table-layout: auto;
margin: 5mm;
padding: 5mm;
border-top: solid 3mm gray;
border-left: solid 3mm gray;
border-bottom: solid 2mm gray;
border-right: solid 2mm gray;
border-collapse :collapse;
}
○[Case 4] table-layout: auto; border-collapse: separate
.auto-2 table {
table-layout: auto;
margin: 5mm;
padding: 5mm;
border-top: solid 3mm gray;
border-left: solid 3mm gray;
border-bottom: solid 2mm gray;
border-right: solid 2mm gray;
border-collapse : separate;
border-spacing:2mm;
}
(1) border-collapseの値がseparateかcollapseかによる主な相違点は、border-collapse: separateの時はセルの周囲のボーダーが独立になりセルとセルの間にborder-spacingで指定する空きができます。さらに、tableのpaddingが有効です。しかし、border-collapse: collapseの時は隣接するセルのボーダーが一つにまとめられます。さらにtableのpaddingもなくなります。
セルのボーダーをまとめるときの優先順位は次の通りです。
1) border-style: hiddenが最優先border-style: noneが最も優先度が低い
2) 幅の広い境界線が狭い境界線よりも優先される
3) 同じwidthをもつ境界線の中の優先度は、double > solid > dashed > dotted > ridge > outset > groove > inset
4) 色のみが異なる境界線の優先度は、cell > row > rowgroup > column > columngroup > tableとなりtableの境界が一番低い。
5) 同じ要素の種類が同じプロパティの線種をもつときは、横書きでは、左に行くほど、上に行くほど優先度が高い。
(2) table-layoutがfixedかautoかによる相違点は、fixedのときは列の幅はセルの内容に関わらず指定の幅になります。autoのときは指定された幅とセルの内容により自動的に幅を決定します。なお、fixedのときに列の幅の指定がないとき、表を包含するブロックの幅を使って表全体の幅の決定をするか、autoでセルの内容に合わせるかはどちらでも良いようです。AH Formatterは表を包含するブロックの幅一杯の幅にしています。しかし、ブラウザの実装は幅指定のない列の幅を小さくしているものが多いようです。


弊社製品の常備店にビッグ池袋店が加わりました

4月より、アンテナハウスの製品を常備していただいているお店に、 (株)ビックカメラ ビックパソコン館 池袋本店 PCソフトコーナー様が新しく加わりました。
よろしくお願いします。
弊社製品の常備店はこちらでご紹介しています。
■製品常備店


「PDFを出力」の動作とCSS3をご紹介

ブログページを「PDFに出力」のボタンを押した時の動作は次の図のようになります。
ブログを閲覧している人が「PDFに出力」ボタンを押すと、Formatterサーバにその要求が伝わります。Formatterサーバは、ブログサーバから現在表示しているブログのページ(XHTML)+CSSスタイルシートをもってきて組版し、PDFを出力します。
PDFファイルのURLをセットしてhttp://cssfo.antenna.co.jp/demo2.phpページを表示します。
Flow.PNG
印刷用CSSの部分をご紹介します。
@media print {
::footnote-call {
content: counter(footnote, decimal);
font-size: 60%;
vertical-align: super;
}
::footnote-marker {
content: counter(footnote, decimal);
font-size: 60%;
vertical-align: super;
-ah-margin-end: 0.5em;
text-indent: 0;
}
@page {
size: A4;
margin-top: 25mm;
margin-bottom: 20mm;
margin-left: 20mm;
margin-right: 25mm;
@top-center {
content: “I Love Software! Blog, PDF generated by AH Formatter V5.0 with CSS3”;
font-style: italic;
border-bottom: solid 0.1pt black;
margin-bottom: 10mm;
}
@bottom-center {
content: “- ” counter(page) ” -“;
}
@footnote {
counter-increment: footnote;
float: page bottom;
border-top: thin solid black;
border-length: 30%;
margin-top: 0.5em;
padding-top: 0.2em;
}}
body {
margin: 0;
padding-left: 100pt;
font-family: serif;
background-color:white;
-ah-punctuation-trim:start end adjacent;
-ah-text-autospace:ideograph-numeric ideograph-alpha;
-ah-text-autospace-width: 25%;
-ah-text-justify-trim: punctuation;
-ah-punctuation-spacing: 50%;
-ah-hanging-punctuation: none;
}
a {
text-decoration: none;
color: blue;
}
div.content > a:first-child {display: none}
.content {
padding: 0;
}
.content p {
color: black;
font-family: Times New Roman, serif;
font-size: 10.5pt;
font-weight: normal;
line-height: 1.2;
text-align: justify;
margin: 0;
}
.content p a:after {float: footnote;
content: attr(href) ;
font-size: 0.9em;
}
div.content > p[align=right] {display:none}
.content p a img {
float: left;
padding: 1em;
}
div.content h2 {
clear: left;
margin-top: 1.5em;
margin-bottom: 0;
margin-left: -35mm;
font-family: serif;
font-size: 10.5pt;
page-break-after: avoid
}
div.content h2:first-of-type {
margin-top: 0em;
}
.content h3 {
margin-top: -1.3em;
page-break-after: avoid
}
#container { width:100% }
#center {
width: 100%;
float:none;
overflow: visible;
}
#right, .sidebar, .vote, .posted,
#banner, .banner, a:first >img {display:none }
}
対症療法的に、印刷時に非表示にしている要素が沢山あります。ブログのテンプレートを書き換えて出力するHTMLのタグをもっと綺麗にするとCSSの方を整理できるかもしれません。とりあえず、ブログテンプレートの方は変更していません。


ブログに「PDFに出力」ボタンをつけました

本ブログに、「PDFに出力」のボタンをつけました。先日(2009年03月26日)の「CSSPrint」ボタンと同じものですが、本ブログの記事を印刷用にレイアウトする簡単なCSSスタイルシートを作って、ブログのシステムの方に入れています。
皆さまもお試しいただけると幸いです。
以前に「PDF千夜一夜」でブログの印刷、書籍化の話題を取り上げました。
2006年08月22日ブログをPDF化するサービス
2006年08月23日ブログをPDF化するサービス・続き
この時に紹介しました例では、中にはXSL-FOをレイアウト指定に用いているものがありましたが、その他はレイアウト機能が比較的弱いものが多かったように思います。
CSS3をレイアウト指定に使う本ブログの方式は、これまでに方法とは格段に柔軟なレイアウト変更ができるメリットがあります。これから流行ると良いですね。
ところで、システムの問題とは別に、ブログを印刷(PDF化)するということになりますと、記事の品質を画面で見るのみよりも良くしなければならないことに気がつきました。これは大発見です。


CSS3 Print機能を超簡単にお試しいただける CSSPrintボタン

どうしたら、簡単にCSS3の便利さを体験していただけるかと頭をひねりました。
そこで、思いついたのがCSSPrintボタンです。
こちらで公開しています。
http://www.antenna.co.jp/AHF/
右上の[CSSPrint]ボタンを押すと数秒で
普通のWebページがCSS3でPDFになります。
※[CSSPrint]→[PDFに出力]に変更しました。


Web制作者はCSS3と印刷レイアウトを学び、Webユーザの不満解消を!

Webはその起源と、PCのディスプレイ上でブラウザでビジュアルにページをナビゲートする方向で発展したという初期の経過から画面表示が主体になっており、印刷はほとんど忘れられています。
特に、最近はWebが企業の広告媒体化したために、Flash、JavaScriptでビジュアルなデザインが流行っています。
こうしたこともあり、Webデザイナは、ビジュアルデザインの研究はしても印刷の研究はおろそかなようです。各種の書籍にも、デザインの方法は書いてあっても印刷に関する解説はあまりありません。
それは、また、レイアウト指定言語CSSの印刷レイアウト指定機能のレベルが低く、一方で、ブラウザの印刷機能の実装があまりに貧弱である、ということも一つの原因です。
この結果、ほとんどすべてのWebユーザが印刷については悩んでいるという事実があります。Webの印刷機能に満足しているユーザは皆無と言っても良いのではないでしょうか。
こういう事実を、ソフトウェア・ベンダもWeb制作者も謙虚に反省する必要があるように思います。
CSS3の印刷レイアウト指定機能はDTP並みとはいかなくてもDTPに近いところまで進みつつあります。
「AH FormatterV5.0」のCSS3機能ですべてのWebユーザに福音となりたいものです。


CSS3で得する話(2) 表示と印刷の時のマージンの問題

CSS スタイルシートではルールの組み合わせを適用する対象媒体を@media で指定します。
ページ媒体向けのルールは@media print を、画面表示向けのルールは@media screen を指定します。
この機能を使って、Webページを印刷するときに、レイアウト指定を切り替える例はブログなどでたびたび紹介されています。
ブログであまり取り上げられていない項目に、表示と印刷の時のマージンの問題があります。
これを説明する前に、次の図をご覧ください。
□ボックスの表示と印刷
Page-root-block.png
CSS ではテキスト、図、表などの組版対象物はボックスとして配置されます。最下位の文字列を含むボックスから最上位のルート要素のボックスまで階層になります。出力先が画面のときはルート要素のボックスをウインドウに表示します。出力先がページ媒体のときはページボックスでページの雛形を設定し、ページ上に他のボックスを配置します。
□ページのマージンとbodyのマージン
ページのマージンは、各用紙の周囲に取られます。
bodyのマージンは、文書全体の周囲に取られます。
両方にマージンを指定すると、印刷ではマージンがその合計になってしまいます。
例えば、bodyの上マージンは、先頭ページ上マージン(のみ)に追加されます。
このことを考えますと、マージン指定は次のように切り替えるのが良いと思います。
@page {
margin:10% /*10%のマージンを仮に取るとして */
}
@media print { /* ページ媒体に適用 */
 body {
margin: 0%;
} }
@media screen { /* 画面表示に適用 */
body {
 margin: 10%;
 } }
HTMLをブラウザで表示して、印刷にはAH Formatterを使うときの話しです。
※ブラウザ印刷機能は@pageルールをほとんどまともに実装していないので、ブラウザで印刷する限りは、あまり関係ありません。


Antenna House Formatter V5.0 23日より 出荷開始

Antenna House Formatter V5.0」を来週月曜日3月23日より出荷開始します。
開発開始以来随分と長い期間がかかりましたが、漸く出荷開始の運びとなりました。
思えば、2006年10月のW3C Print Symposium 2006でCSSとXSL-FOの互換性を高めて欲しいと呼びかけて以来。長い道のりでした。
2006年10月20日 W3C Print Symposium 2006 (3) XSL-FOとCSSの互換性
2006年10月21日 W3C Print Symposium 2006 (4) XSL-WG
CSSとXSL-FO、この二つのスタイルシート仕様の溝は思ったより深いようです。具体的にはCSSのボックスモデルとXSL-FOのエリアモデルという基本的なモデルの違いが、いろいろなところに大きな影響を及ぼすようです。
XSL-FO2.0のドラフト作成も遅れているようです。ここでCSS3とXSL-FO2.0のモデルの統一を、再び、呼びかける意義があるのかもしれません。用途もユーザも違うので統一しなくても良いと言ってしまえばそれまでですが、開発会社にとっては二つのモデルへの対応は結構大変ですし、互換性があるほうが良いのは決まっています。
ちょっと先走ってしまいましたが、AH Formatter V5.0ではCSS3によるプリントデザインと称して、Webの制作と印刷物の制作の統合を呼びかけたいと考えています。
デモサイトでCSSによるPDFページ生成をお試し頂けます。ここでは次世代CSS3の持つ特徴的な機能について体験して頂きやすいよう帳票類、出版物、Webサイトの例をご用意しています。
是非こちらからお試しください。
http://cssfo.antenna.co.jp/


CSS3でWeb制作と印刷物制作の統合を!「CSSによるプリントデザイン」セミナー開催

現在開発中のCSS3ではページレイアウト機能が大幅に強化されています。
CSS3では印刷品質のレイアウト指定も可能となり、近く発売するAH Formatter V5で、HTML+CSS3から印刷物を作ることができます。
そうなりますと、現在一般に行なわれている、WebはHTMLのエディタで作成し、印刷物はDTPで制作するという2つの工程を統合して、HTMLを制作してWeb表示のレイアウトと印刷物用のレイアウトを切り替えるという方式で、2つのアウトプットができます。これにより真のワンソース・マルチユースが現実のものとなります。
このことを、実際にAH Formatter V5とCSS3について、実演を交えながら詳しくご説明するセミナーを、開催します。
詳細は次のページをご覧ください。
Web表示と印刷の統合を実践 「CSSによるプリントデザイン」セミナー
また、「CSSによるプリントデザイン入門」の冊子も配布しています。
こちらをご覧ください。
CSSによるプリントデザインの情報


コンピュータ画面での行折り返し問題、段組問題

昨日、Webを見ていましたら、「CSS 3の段組みと、その使いどころ」というブログページを見つけました。
CSS 3 の段組みとその使いどころ(段組指定例)
ブラウザでの多段組レイアウトの問題点として、スクロール回数が多くなること。コンピュータの画面の大きさや縦横比のバラエティが多いので柔軟なレイアウト設計が必要とのことです。段組をコンピュータの画面上で見やすくするには、MicrosoftのXAMLビューアのように表示Windowsのサイズに合わせて再描画するような仕組みが必要です。
これはHTMLに限らず、PDFでも同じ問題がありますね。それで思い出しましたが、最近、政府の法律がPDFで公開されているのは良いですが、用紙縦使い(ポートレート)で縦書しているので読み難いったらありません。この法律PDFを画面上で読むには1行毎に上下スクロールの繰り返しが必要で、読み難さは段組の比ではありません。
さて、本題に戻りますが、そのブログページに触発されて、以前に書いたWebページ「CSSによるプリントデザイン」の内容を改訂しました。
「CSSによるプリントデザイン」
序に自分でも段組を実践してみようと考え、印刷版の段組を使うCSSを作って指定してみました。
<link rel="stylesheet" href="../css/XMLPrint.css" media="print"/>
でリンクしてあります。
段組はスタイルシート上では、
.two-cols {
-ah-column-count: 2;
-ah-column-gap: 20pt;

を指定し、HTMLコンテンツ上では、段組する範囲を
<div class=”two-cols”>
・・・
</div>
で囲むだけです。
一般のブラウザでは表示できませんが、AH Formatterのデモページでご覧頂くことができます。
(ちなみに、接頭辞を-moz-にするとFirefoxでも段組が働きます。)
デモページ:http://cssfo.antenna.co.jp/demo2.php
一般のサイトを見るのフォームに
http://www.antenna.co.jp/XML/xmllist/CSS-Print.html
をコピペして、URLを送信を試してみてください。
とりあえず、ローカルで作成したPDF版もリンクしておきます。
ファイルをダウンロード
これを作ってみて、「未来のWebデザイナは、きっと日本語組版と印刷ページレイアウトの勉強が必須になるだろうな。」ということを感じました。今までは、読者に読み易いページデザインをどう作るかの勉強は出版関連デザイナだけの世界だったかもしれませんが、今後は、Webを作る人も勉強が必要ということです。今後とは、CSS3が普及した時代。


Pages: Prev 1 2 3 ... 136 137 138 139 140 141 142 143 144 145 146 Next