如何在不使用子元素继承的情况下设置margin-left?

时间:2012-06-27 14:02:18

标签: xsl-fo

我需要设置页眉中所有内容的 margin-left margin-right (xsl-region-before)。我试图将属性添加到< fo:block>这反过来包含所有标题内容。然而,边际由子块继承,这不是我想要的。

有没有办法在没有继承的情况下设置保证金?

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

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

start-indent =“0pt”end-indent =“0pt

DMA

答案 2 :(得分:2)

这是我的痛苦。 每个季节,当我开始使用XSL-FO时,我都会遇到麻烦。

解决方案。现在和永远。

1。如果你想要一个外部块(我最喜欢的)边距。谢谢Yobert。

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

2。如果你在桌子上设置边距(我不喜欢这样做,但我应该让我的团队记住)。谢谢David Mangon。

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

3。只是为了表中的一个具体单元格来覆盖indents()。谢谢你。

<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 =&#34; 0&#34;

<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">

所有这些方法都经过了测试。

答案 3 :(得分:1)

我能够使用两个嵌套的<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>可能就是你想要的。