2012-08-16 48 views
3

有沒有辦法檢查(在CSS中)如果一個元素正在打破/新襯裏? 我無法知道div或父級的寬度。我只是想知道破發後的第一個元素,這樣我就可以給這個元素CSS可以檢查元素是否中斷?

像這樣添加特殊CSS:

<div> 
    first 
</div>  
<div> 
    second 
</div> 
<div> 
    third 
</div> 
<div> 
    fourth 
</div> 

的CSS:

div { 
    float:left; 
    width:200px; 
    height:20px; 
} 
div:not(:first-child) { 
    padding-left:10px; 
} 

在這裏,我需要檢查如果元素是在一個新的行,所以我可以刪除填充:

div:first-after-break { 
    padding-left:0; 
} 
+0

我相信你正在尋找['text-indent'](https://developer.mozilla.org/en-US/docs/CSS/text-indent)CSS屬性。\ – 2012-08-16 10:36:20

+0

你是什麼人用'div:不是(:first)'來表示? ':first'不存在,':not'支持仍然相當脆弱(特別是IE <9不支持)。你究竟在哪裏知道它正在破裂。如果兩者都浮動,那麼在div或div之間? – RoToRa 2012-08-16 10:38:53

+0

我居然做了一個錯字,我應該是:第一,孩子 – Arazu 2012-08-16 10:49:02

回答

0

不,我不認爲這是一種用CSS來做你想問的問題。

一個DIV會自動佔用它父母的全部寬度,除非指定了一個寬度,因爲它是一個BLOCK級別的元素,所以如果沒有指定寬度,那麼您的第二個DIV就會在新行上。

1

您可以使用::first-line僞元素得到一個div的第一道防線。如果你想樣式規則適用於那些不第一行線,您可以應用這些樣式整個元素,然後從第一行中刪除。但是,如果你想專門使用padding屬性,你也可以在整個元素上設置text-indent(沒有任何僞元素)。

+0

我加了一些更多的解釋,因爲它不清楚是什麼我真的很想 – Arazu 2012-08-16 11:02:54

+0

是否第一行實際上在塊級元素上工作? – Lg102 2012-08-16 11:45:59

+0

@ Lg102它*僅適用於塊級元素,因爲僞元素應用於包含多行的元素,而不是這些行中的元素。 – 2012-08-16 11:47:45

3

我認爲在這種情況下,您可以使用padding-right來分隔您的元素,而不是padding-left。這樣,元素在新行上開始時不會縮進。如果padding-right導致問題在該行的末尾,你可以考慮使用:last-child僞選擇器(more information about :last-child),並設置padding-right: 0;那裏。

這不放棄的問題,雖然。我可以想到你描述的:first-after-break僞造的合法用途。例如:使用浮動塊級元素的完全響應式佈局。在這種情況下,人們可能想知道某個元素是否在窗口的左側。

+0

這確實解決了我的問題,但正如你所說,它並沒有放棄我真正想用這個達到的目標。 – Arazu 2012-08-16 14:58:22

相關問題