2011-12-29 103 views
1

我有一個表單與各種樣式表相關聯。我有兩個樣式表,其中有select標籤的樣式。所以當我連接兩個樣式表時,它都會發生衝突。如何手動將特定樣式表中的樣式應用於元素?

例如

我有style1.css和style2.css其中包含選擇標籤樣式。我有兩個選擇標籤與ids select1和select2。

我只想要style1.css中的樣式應用於select1和從style2.css到select2的樣式。我該怎麼做 ?

我無法指定這些特定ID的樣式,因爲它也會影響其他選擇標籤。

如何讓不同樣式表的樣式僅在特定位置工作?

+2

,它不可能與客戶端技術 - 一旦樣式表被加載,它就不在我們手中。但是,如果您有可用的服務器端語言,則可以「合併」這些樣式表並根據需要提供一個最終樣式表。 – 2011-12-29 08:25:42

+0

如果不更改任一樣式表中的CSS選擇器,這是不可能的。 – Sjoerd 2011-12-29 08:26:01

回答

1

您可以使用CSS3的:not()選擇器。例如,在style2.css,你可以這樣寫:

select:not(#select1) { 
    // styling here will be applied to all selects except select1 
} 

但在現實中你應該把所有的造型爲一個CSS文件中select標籤。這樣你可以更容易地控制衝突。

+0

非常好的解決方案,只有一個問題:IE8及更早版本不支持':not()'選擇器。 IE9和其他瀏覽器支持它。 – psur 2011-12-29 08:51:01

0

CSS以這樣的方式工作,即上次設置是最重要的。所以,你可以在最後的style2.css您可以定義樣式select1第一鏈接style1.css,然後style2.css

#select1 
{ 
    /* styles */ 
} 

它不會影響任何其他元素,只select1

但通常你應該在一個樣式表中合併樣式。

0

您可以將style1 id的類名定義爲class="style-one",然後通過將!important標記定義爲元素樣式來定義樣式。 是這樣的:

.style-one{border:none !important;} 

而且你可以在任何你正在使用的樣式表,據我所知,這個類定義不改變順序:)

相關問題