2012-10-17 53 views
-1

說,一個HTML文件包含以下元素:DOM:來自親強制類屬性的繼承

<div class="mydiv"> 
    <img src="img.jpg"/> 
</div> 

我想知道這是否是安全的編程它改造成

<img class="mydiv" src="img.jpg" /> 

也就是說,將父級的類添加到子元素並剝離父級本身。 當CSS規則存在於類中時,HTML代碼的兩個版本是否會產生相同的渲染?如果不是,事實上哪些情況不會發生?

注:
-the父母只是採用了類,它沒有其他有意義的屬性
-the CSS文件不能被修改
-the轉換是由JavaScript在HTML載入
後進行 - 目標是擺脫父級,但所有CSS規則呈現相同

+0

'div's默認爲'display:block',另一方面'img's'inline'(嚴格模式)。 –

+0

更何況你的問題缺乏很多細節,例如你的新'.mydiv' img不會繼承以前出現的'.mydiv img'。 –

+0

你只是爲自己創造更多的工作。正如FabrícioMatté所說。如果它能正常工作,請保持獨立。 :-) –

回答

0

首先解決問題的標題:類永遠不會被繼承。 CSS規則可以。

有一些一般情況下可能出現問題的情況。

可能有規則,只有在某些條件下應用(例如margin: auto具有取決於display值(其具有用於不同的元素不同的默認值)不同的效果。

選擇器可能更具體的是.mydiv有可能是div.mydiv.mydiv img

0

不,不是所有的CSS聲明級聯向下。哪些級聯以及它們如何級聯取決於瀏覽器。

+0

錯誤。沒有。級聯在瀏覽器中實現得非常一致。 – Quentin

+0

也許在理論上。但實際上,我覺得這很難相信。 –

+0

不,在實踐中。他們花了很長時間才弄清楚。級聯規則並不那麼複雜。 – Quentin

0

如果DIV中的類的唯一原因是定義圖像的唯一屬性,那麼YES可以換出,行爲應該是相同的,您還必須更新CSS以確保你能處理這個新的班級任務

但是,確保DIV分配不存在以建立上下文。也就是說,HTML中可能還有其他IMG,現在可以由新的類別分配來覆蓋。

div.mydiv> IMG比img.mydiv

而且該父DIV可以由更廣泛的範圍的另一類似CSS規則覆蓋一個更具體的方案。