2015-04-03 145 views
1

我想要做的東西像下面這樣:對齊文本基礎上,如果頁面左邊或右邊

@page :left{ 
    h1 {text-align: left;} 
} 
@page :right { 
    h1 {text-align: right;} 
} 

但是這句法不會CSS工作。如何根據頁面是左側還是右側來更改文本對齊方式?

+0

你想改變H1對齊只,或該網頁上的所有段落樣式? – Hobbes 2015-04-03 12:28:55

+0

兼容性似乎有限,這可能是主要問題.. https://developer.mozilla.org/en-US/docs/Web/CSS/:left但是你有沒有嘗試過'margin-left:'和'margin-right :??文本對齊只會對齊你的h1標籤中的文本,如果沒有設置寬度,你不會注意到任何一邊的對齊,因爲h1塊只會和其中的文本一樣寬。 – 2015-04-03 12:29:17

+0

@霍布斯我在這個頁面上只有一個文本元素,所以我想這兩種方法都可以。 @HastigZusammenstellen這個名字對於'@'消息來說太長了。無論如何,任何解決方案都可以,只要我可以根據頁面是左邊還是右邊來指定一些格式。 – 2015-04-03 14:10:49

回答

0

我沒有測試過的,我相信你可以做到這一點:

@page :left h1 {text-align: left;} 
@page :right h1 {text-align: right;} 
+0

剛剛嘗試過,沒有工作(在Chrome中)。 – 2015-04-03 14:08:45

+0

目前沒有支持@page規則的瀏覽器。您可以嘗試PrinceXML – pwavg 2016-01-18 12:48:26

1

如果設置對齊方式的網頁上的所有文字是可以接受的,這應該工作:

@page :left {text-align: left;} 
@page :right {text-align: right;} 

如果該頁面包含一個h1元素以及一個或多個其他元素,您可以將h1放在頁面標題中,請參閱this related question

+0

的評估副本謝謝,但我需要能夠設計單個元素。 – 2015-04-07 08:31:07

+0

@Nate:編輯答案 – Hobbes 2015-04-07 08:38:33

+0

謝謝。我認爲目前還沒有對基於當前頁面的更一般的樣式化問題提供CSS答案,但您指出的解決方案可以與Flying Saucer或WeasyPrint(但不是任何瀏覽器)兼容。 – 2015-04-07 10:27:36

0

根據https://www.w3.org/TR/css3-page/#margin-property-list,語法:

@page :left { 
    h1 { text-align: left; } 
} 
@page :right { 
    h1 { text-align: right; } 
} 

是正確的;然而,正如其他人所說,目前沒有對@page的瀏覽器支持,而PrinceXML的最新版本也不支持text-align

這意味着,現在,它無法做到的。

然而,PrinceXML支持margin在頁邊距環境。所以,如果人們能夠承受使用靜態邊距推文本,例如:

@page :left{ 
    h1 { margin-right: 10000em; } // We all know 10000em equals to infinity. 
} 
@page :right { 
    h1 { margin-left: 10000em; } 
} 

然後這是一個好kludge。

編輯:其實,PrinceXML做,而不是連續的頁眉支持text-align;顯然它只適用於生成的字符串內容。