2013-08-04 29 views
2

我將HTML文檔呈現爲PDF。以前我使用Wkhtmltopdf,但看起來Dompdf提供了更好的分頁符支持,所以我希望我會切換到這一點。CSS「孤立」應該在行還是塊級別運行?

我想將一些孤兒控制應用於我的文檔,因此我需要深入瞭解orphans實際執行的操作。來自W3C(source):

孤兒屬性指定塊容器中必須留在頁面底部的最小行數。

一個始終在網絡上提供的例子是這樣的:

p { orphans: 3; } 

這意味着,如果沒有三線段落文本的空間,休息被迫到下一個頁面。我渲染含有大量無序列表的文件,所以對我來說這將是:

li { orphans: 2; } 

不過,我也最想要的打破無序列表讓子彈項塊不是孤立的或喪偶在其自己的。這將是很好能夠做到這一點:

ul { orphans: 2; } 

這將理想確保沒有項目區塊可能出現高於或低於自身分頁符。但是瀏覽器/渲染器對此的支持是不完整的,上面的W3C使用「行」而不是「塊」。因此,我想上述只會影響列表項中的段落線控制,並不會影響整個列表項塊。如果是這樣的話,有沒有一種CSS方式來做到這一點?

+0

你的意思,你想一個'li'元素之前分頁符,如果只有一個'li'元素否則會適合在頁面上(無論內容中有多少行)?如果不是,那麼呢?無論如何,孤兒屬性總是與線條有關。 –

+1

感謝您確認「孤兒」應該做些什麼。確實如此:如果有四個'li'項目,並且頁面末尾有三個空間,那麼休息時間應該在第二個和第三個之間。這將是我們擁有2的屬性值(即塊的最小數量)的地方。這個問題對我來說並不重要,但我認爲這是一個普遍的探索。我想知道它是否需要JavaScript來實現(這可以在Prince和wkhtmltopdf中實現,但不能在dompdf中實現)。 – halfer

回答

1

作爲對WeasyPrint issue tracker提及麗澤:

孤兒/寡婦僅用於線箱工作,而不是爲塊狀盒。

幸運的是,你可以這樣定義規則:

li:last-child { 
    break-before: avoid; 
} 
li:first-child { 
    break-after: avoid; 
} 
相關問題