2011-07-28 24 views
0

爲什麼,如果我這樣做:爲什麼一些HTML元素允許「交叉」?

<div> aaaaaaaa <b></div> 
<div> bbbbbbbb </div> 
<div> </b> ccccccccc </div> 

...內容 「BBBBBBBB」 是大膽?那麼,爲什麼我不能做另一個標籤同樣如<跨度>而不是< b>嗎?大膽的案例只是瀏覽器試圖修復它,還是實際上有效?

我attemping隱藏某些可能跨越幾個< div>標籤,但只知道那裏的文字開始和結束的文本內容。我可以使用標籤,如< b>來做到這一點(與css stylin)?或者這是一個非常糟糕的主意?

您有任何其他建議嗎?

編輯:我不能輕易改變的HTML所以驗證是沒有用的。 HTML是用戶生成的。

+1

使用HTML驗證(試行http://validator.w3.org/),它會告訴你,這種情況下是無效的。 – jackJoe

+1

這不是一個壞主意。這是最糟糕的想法:D有沒有辦法讓一切都在一個獨特的div?在你的例子中,像

aaaa
bbbb
ccccc
? – ezakto

+0

在「b」或「span」中使用任何div都不是一個好主意。 '

bbbbb
'是做到這一點的正確方法 – Gasim

回答

7

這是不允許的。這只是瀏覽器試圖執行錯誤恢復。

的元素必須被佈置在樹結構中。每個元素都有一個父元素(根節點除外)。

鑑於上述輸入,Chrome會產生這樣的:

<div> aaaaaaaa <b></b></div><b> 
<div> bbbbbbbb </div> 
</b><div><b> </b> ccccccccc </div> 

你不應該依賴於這種類型的錯誤恢復。永遠記得validate

2

使用不良HTML是一個糟糕的主意,因爲不同的瀏覽器對待這樣的「錯誤」是不同的。但是,您總是可以將內容嵌套在父元素中,您可以隱藏/顯示。

像這樣:

<div style="visibility:hidden"> 
    <div>First hidden sentence</div> 
    <div>Second hidden sentence</div> 
</div>