4

我需要在页眉(xsl-region-before)中设置所有内容的左边距和右边距。我试图将该属性添加到 <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. 如果你想要外部块的边距(我最喜欢的)。谢谢约伯特。

<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 回答
2

您可以在表格主体元素上使用以下属性:

开始缩进=“0pt” 结束缩进=“0pt”

DMA

于 2013-07-04T09:38:08.270 回答
2

我能够使用两个嵌套<fo:block-container>元素来解决这个问题。

<fo:block-container margin-left="1in">
<fo:block-container margin-left="0in">
...stuff...
</fo:block-container>
</fo:block-container>

它之所以有效,是因为内部块容器现在以 0 的边距传递给它的孩子。

我还没有尝试过,<fo:block>但我敢打赌它也可以在那里工作。 <fo:block-container>可能是你想要的。

于 2013-11-03T22:52:25.337 回答