2015-04-08 61 views
7

有沒有簡單的方法來選擇所有的塊級CSS元素?使用css選擇所有塊級元素

我希望把所有的塊級元素之間時許1.5 EM保證金在我的網站的主要內容區域

現在,我有這樣的代碼:

#wrapper .content p, #wrapper .content ul, #wrapper .content div, #wrapper .content ol, #wrapper .content blockquote, #wrapper .content table {margin-top: 1.5em;} 

#wrapper .content p:first-child, #wrapper .content ul:first-child, #wrapper .content div:first-child, #wrapper .content ol:first-child, #wrapper .content blockquote:first-child, #wrapper .content table:first-child {margin-top: 1.5em;} 

這是一個皇家疼痛後讀或維持......

我想的東西,如來替代它:

#wrapper .content *:block + *:block {margin-top: 1.5em;} 

這可能嗎?

我不能使用* + *,因爲它也會捕獲內聯元素,表格單元等,我不希望在段落中間應用隨機邊距。我也不能使用#wrapper .content > *,因爲它不會嵌套div

+1

我認爲內聯元素會忽略邊距,不是? –

+0

@George Garchagudashvili:不完全。內聯元素上的垂直邊距可能會影響基線計算,這會在依賴內聯塊或表的佈局的任何部分產生災難性結果。 – BoltClock

+0

您的要求很奇怪,但並非不可能。我寧願建議你爲需要「保證金」的元素指定特定的類,或者如果你確定要定位所有的塊元素,而不是最好將它們列在樣式表中併爲它們分配保證金 –

回答

1

這是不可能的CSS;你不能根據它的一個CSS屬性選擇一個元素。您需要使用JavaScript來選擇類似getComputedStyle之類的所有元素,然後根據找到的內容運行一些腳本邏輯。

您可以在CSS中找到最接近的東西是選擇HTML 屬性;諸如hreftitle

1

@tylerh答案是正確的,它不可能以您要求的方式在純CSS中激活。

一個解決辦法可能與CSS是創建一個通用的CSS類來處理你的塊級元素,如.block-element

然後用

#wrapper .content .block-element { margin-top: 1.5em; } 
+0

我寧願列出樣式表中的所有塊級元素,而不是將塊元素類添加到明顯的塊級元素中...... –

+0

@ mr-alien,你可以自由地這樣做。我會說,根據你的標記,'.block-element'在我自己的大部分實現中代表一個網格行或一個組件包裝器。但這一切都取決於標記和CSS的結構。 – anderssonola

-1

申請保證金的造型有沒有一種簡單的方法用CSS選擇所有塊級元素?

默認情況下,非塊元素忽略邊距。所以你回答你的問題。

+0

不正確。請參閱有關問題的評論。 – BoltClock

+0

這是不正確的。http://jsfiddle.net/mr_alien/tLbg9e75/ –

+0

你們都忽略了上下文。去插入(作者要求)保證金頂部和底部。查看是否忽略邊距。順便說一句,你好@BoltClock,你有很多的XP,你不知道你在說什麼,祝你有個美好的一天! :) – n1kkou