XSLT/XSL-FO/MathML テクニックマージン/インデント |
|
Q. | blockに'margin-left'プロパティを使用してインデントを付けたのですが、このblockの子要素のテーブル内までインデントされてしまいました。なぜですか。 [No.2002101806] |
---|---|
A. |
これは継承によるものです。 W3Cの勧告では、親要素にて指定されたプロパティが子要素にまで影響するプロパティがあります。これを「継承」と言っています。 'margin-left'プロパティは本来継承されないプロパティです。ただし margin-left は start-indent に変換されて処理されることになっていて、 start-indent の方が継承されるプロパティとなっています。 start-indent = margin-corresponding + padding-corresponding + border-corresponding-width end-indent = margin-corresponding + padding-corresponding + border-corresponding-width (W3CのXSL-FO仕様の勧告の5.3.2 Margin, Space, and Indent Properties をご覧ください。) したがって、指定した margin-left は( border、padding が0であるならば) start-indent を指定したのと同じことになり、テーブル内にまで継承されます。 もし、テーブルに start-indent / end-indnet を継承させないようにするためには、 table-body / table-header / table-footer に start-indent="0cm" とすればよいです。 |