2009-04-08 12 views
5

我的HTML頁面包含一個名爲「main」的id的div,並且我將另一個HTML頁面包含到我的HTML頁面中,該頁面包含一個具有相同id(「main」)的div。我需要給我的HTML頁面的id(「main」)添加一個名稱空間。如何在css中使用命名空間?

我包括來自其他站點的頁眉,頁腳,並將來自我網站的內容包含到該HTML頁面。如果其他網站使用與我的網站使用相同的ID,則此處發生衝突。

在這個HTML頁面中包含兩個css文件。如果他們兩個在不同的風格中包含相同的類,則存在問題。

我需要將我的css文件應用於我的代碼,另一個應用於剩餘的代碼。 可以解決我的問題嗎?

回答

1

我同意所有人到目前爲止,因爲沒有本地CSS命名空間功能,並且如果您有控制(或願望/容量)編輯您的HTML那麼這是最好的方法。

自動完成此過程的一種方法是編寫一個腳本(PERL,PHP,.NET等)來解析您正在使用的HTML,並用修改後的版本替換任何現有的ID或類。

<tag id="theID" class="theClass anotherClass">成爲<tag id="NAMESPACEtheID" class="NAMESPACEtheClass NAMESPACEanotherClass">

你可以用一些創造性的正則表達式實現這一點,但它會得到棘手,如果有JavaScript代碼,將需要以及修改。

就性能而言,這取決於文件的大小,並且您可能想要緩存結果或重寫原始文件。

讓我知道如果你決定走這條路線,這個想法實際上聽起來有點耐人尋味,可能在我的工具箱中有一席之地!

0

在第二個div的ID中使用第二個div的名稱。例如,如果第二頁被稱爲signup.html,請使用main_signup

2

是否有任何關於div的包含元素將使它們彼此分開。如果你可以在你的CSS聲明前加上包含元素,併爲這兩個div指定一個唯一的樣式。

如:

#main 
{Style} 
.container #main 
{Another style} 

正如人們所提到的,如果你有過HTML控件是明智的做法是指定這兩個元素或一個唯一的ID爲他們每個人不同的類。

+0

你打我吧。答案的自動更新功能很不錯。 – IEnumerator 2009-04-08 11:57:12

+0

在HTML文檔中使用相同的ID是不正確的,是嗎? – Sergey 2009-04-08 12:05:26

4

兩件事情:

  • 這聽起來像你需要一個類,而不是一個ID。
  • 如果您希望應用樣式之間的每頁差異,請使用嵌入的樣式表。

在這種情況下使用相同的ID肯定會與broken windows一起生活。如果你對這種情況有任何控制權,你應該更新HTML,而不是稍後再引起混淆。

2

帶有重複ID的頁面無效。即使您通過將id與類組合在一起來設置單獨的元素,但並不保證能夠與所有瀏覽器一起使用。

要生成有效頁面,元素需要有唯一的ID。

1

簡而言之,CSS中沒有這樣的命名空間。使用其中一個解決辦法其他答案建議:)