2022-11-20
Shinyu Murakami
Vivliostyle Foundation
CSS Grid Layout の例:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 50px;
} …
@page {...}
の中でも使用可能。:root {
--page-width: 148mm;
--page-height: 210mm;
}
@page {
size: var(--page-width) var(--page-height);
…
}
:has()
擬似クラスの使用例:
section:has(section) {
/* 内側にもsectionが存在するsectionのスタイル */
}
h1:has(+ p) {
/* 段落pがあとに続く見出しh1のスタイル */
}
最新のブラウザで使えるのにVivliostyleでサポートできてないCSSの機能はまだあります。以下のものなど:
::marker
箇条書きのマークを指定する擬似要素 (#723)@counter-style
カウンタースタイルを定義 (#731)@layer
カスケードレイヤー (#977)@container
コンテナクエリー (#1046)lh
は行高(line-height)を基準にした長さの単位。rlh
はルート要素のline-heightが基準。p { /* 段落間を1行分あける */
margin-block: 1lh;
}
header { /* 見出しブロックを3行どりに */
block-size: 3rlh;
}
Vivliostyle.jsでは、ブラウザでは未サポートのページメディア用CSS仕様など組版に必要なCSS機能の実装を進めてきた。以下は主なもの:
:nth(An+B)
:n番目のページのスタイルtarget-counter()
:クロスリファレンスや目次・索引などの参照先ページ番号を生成するのに使用以下はページメディア用CSS機能でまだできてない主なもの:
margin-break: auto
は、なりゆき改ページでページの先頭になったブロックのマージンを破棄margin-break: keep
はマージンを保持するmargin-break: discard
はマージンを破棄(0にする)@footnote
(footnote area) (#1045)
leader()
function (#1027)
print-css.rocksというサイトで、いくつかのCSS組版ツールをいろいろテストしての比較一覧が公開されている: