2012-01-17 116 views
76

我有一個包含了ID(S)的形式S1的,S2等的div的HTML頁面。在css中使用正則表達式?

<div id="sections"> 
    <div id="s1">...</div> 
    <div id="s2">...</div> 
    ... 
</div> 

我想將css屬性應用於這些部分/ div的子集(取決於id)。但是,每次添加div時,我都必須像這樣分開添加該部分的css。

//css 
#s1{ 
... 
} 

有什麼樣的CSS正則表達式,我可以使用應用樣式的一組的div

+4

您應該使用'class'屬性來標識具有這些ID的元素的類 – LeeGee 2014-02-07 17:03:27

回答

135

您可以管理選擇那些沒有任何形式的正則表達式的元素,而是直接回答這個問題,是的,你可以在選擇器中使用一種正則表達式:

#sections div[id^='s'] { 
    color: red; 
} 

這就是說,選擇任何div元素#sections div中有一個ID開頭字母's'。

請參閱fiddle here

W3 CSS selector docs here

+1

這是在CSS 2.1的建議;它支持IE 7,Opera 9等。資料來源:https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors – 2014-06-10 20:38:20

+1

這太糟糕了,無法傳遞更復雜的正則表達式...... – weltschmerz 2016-06-09 01:00:46

8

首先,在HTML文檔中有許多匹配項目的方法。應該謹慎使用ID匹配。

首先從此引用開始,查看可用於將樣式規則應用於元素的一些可用選擇器/模式。

http://www.w3.org/TR/selectors/

大多數選擇將與IE 9和所有其他現代瀏覽器中運行;重要的選擇器在IE 8中工作(結果將改變IE 7和更低版本)。其次,除非您確實需要通過ID明確指定項目,否則請考慮使用分層選擇器。這使代碼更清潔。

匹配#sections的直系後裔的所有DIV

#sections > DIV 

匹配所有DIV,這種是#sections直接或間接後裔。

#sections DIV 

比賽第一DIV這是#sections的直系後裔。

#sections > DIV:first-child 

DIV與特定屬性匹配。

#sections > DIV[foo="bar"] 
3

可以」只需添加一個類到每個資料覈實和規則應用到類以這樣的方式

HTML:

<div class="myclass" id="s1">...</div> 
<div class="myclass" id="s2">...</div> 

CSS:

//css 
.myclass 
{ 
    ... 
} 
+3

另外作爲一般規則,我儘量不使用ID選擇器來設置樣式。它調整了特異性,所以它們很難覆蓋,這通常會比我的經驗傷害更多。我使用ID的...只是不適用於CSS。 – prodigitalson 2012-01-17 23:55:44

+0

@prodigitalson您的評論對我來說確實不太清楚。 – 2012-01-17 23:57:23

+0

我是jsut說,我儘量避免使用ID選擇器,因爲如果你以後重寫樣式(讓我們說一個特定的頁面),那麼你最終不得不使用相同的選擇器+任何其他你可以用它來做到這一點比原始選擇器更具體。不錯,如果它只是'.thepage#someid',但它可以在高級表格或列表樣式上真正長久。它不是一個批評你的答案,因爲它是擴大你的答案的一般建議:-) – prodigitalson 2012-01-18 00:00:19

20

ID是爲了識別唯一的元素。應用於它的任何樣式對於該元素也應該是唯一的。如果您想要將樣式應用於許多元素,則應該爲它們全部添加一個類,而不是依靠ID選擇器...

<div id="sections"> 
    <div id="s1" class="sec">...</div> 
    <div id="s2" class="sec">...</div> 
    ... 
</div> 

.sec { 
    ... 
} 

或者在特定情況下,你可以選擇你的父容器內的所有部門,如果沒有其他的裏面,像這樣:

#sections > div { 
    ... 
} 
-4

還有另一種簡單的方法來選擇CSS太特別的元素...

#s1, #s2, #s3 { 
    // set css attributes here 
} 

如果你只有少數幾個元素可供選擇,並且不想要帶班打擾,這會很容易地工作太。

+0

爲什麼downvote? – 2012-10-10 20:08:12

+1

@AustinHenley Bcoz這不是解決方案。我不想每次都編輯css規則,就像我在問題中提到的那樣。 – Ankit 2012-11-07 14:52:54

+0

這不值得讚賞。例如,如果您知道最多隻有10個div,您可以將#s1設置爲#s10,而不必觸摸選擇器。這樣做的正確方法是使用類,但這種解決方案正在考慮您的假設並嘗試解決方案。 – jcuenod 2015-04-03 15:21:40