4

ページヘッダー(xsl-region-before)内のすべてのコンテンツのmargin-leftmargin-rightを設定する必要があります。すべてのヘッダーコンテンツを保持する<fo:block>に属性を追加しようとしました。ただし、マージンは子ブロックに継承されますが、これは私が望んでいることではありません。

継承せずに証拠金を設定する方法はありますか?

4

4 に答える 4

3

回避策を見つけました:内側のブロックでマージンを負の数に設定します:

<fo:block margin-left="10mm" margin-right="10mm">
    <fo:table>
        <fo:table-column column-width="100%" />
        <fo:table-body>
            <fo:table-row>
                <fo:table-cell text-align="left">
                    <fo:block margin-left="-10mm" margin-right="-10mm">
                        Some text
                    </fo:block>
                </fo:table-cell>
            </fo:table-row>
        </fo:table-body>
    </fo:table>
</fo:block>
于 2012-07-02T13:49:04.490 に答える
3

それは私の痛みです。XSL-FO を使い始める季節ごとに、この問題が発生します。

ソリューション。ずっと。

1. 外部ブロックにマージンが必要な場合(私のお気に入り)。Yobertさん、ありがとうございます。

<fo:block-container
    margin-left="3pt"
    margin-right="3pt"
    >
    <fo:block-container margin="0">

2. テーブルにマージンを設定する場合 (私はこれを行うのは好きではありませんが、チームが覚えておく必要があります)。ありがとうデビッド・マンゴン。

<fo:table
    margin-left="3pt"
    margin-right="3pt"
    >
    <fo:table-body
        start-indent="0"
        end-indent="0"
        >

3. テーブル内の単一の具体的なセルがインデントをオーバーライドするためだけに ()。ありがとうございます。

<fo:table
    margin-left="3pt"
    margin-right="3pt"
    >
    <fo:table-body>
        <fo:table-row>
            <fo:table-cell>
                <fo:block-container margin="0">
                    ... content ...

4 . また、Arne Evertsson の負のマージン (彼の回答を見てください)。

5. いくつかの奇妙なケースで。パディングを使用する場合は、margin="0" を追加することを忘れないでください

<fo:block-container padding="0 3pt" margin="0">
    <fo:block>

6 . 問題が発生した場合は、経験則を使用することを検討してください。親要素ではパディングを使用せず、子要素ではマージンを使用してください。あなたのレイアウトマスタリングで。

<!-- Set borders. -->
<fo:block-container xsl:use-attribute-sets="borderDefault">
    <!-- It's like a padding on a parent. -->
    <fo:table-and-caption margin="2pt">

このすべてのアプローチがテストされました。

于 2016-01-10T09:47:37.020 に答える