2013-03-13 188 views
7

哪個選項是最好的:隱藏元素或創建動態?

  • 已經在標記元素,隱藏的CSS。如果JS已啓用,請顯示該元素。

  • 在標記中沒有任何元素,並且如果啓用了JS,則可以實時創建它。

如果用戶沒有JS,我不想顯示一個div。我的問題不是如何編寫不同的案例,而是最好的和爲什麼。

編輯: 當我說「最好的」我的意思是支持與爲什麼它是對你最好的答案。可以是速度/語義/等等。我想要的是能夠更好地瞭解每個人的利弊。速度也不是問題,因爲它只是一個元素,所以它會像毫秒一樣。

對於第一個選項,它可能更快,但是我們有不必要的標記和CSS規則。因爲如果沒有JS,根本沒有任何要點,更不用說隱藏它。

現在的第二個選擇,即使它可能不是那麼快,我保持不同的部分分開,只真正加載必須加載的東西。

+1

你是什麼意思的「最好」?速度/性能還是語義? – j08691 2013-03-13 15:07:47

+0

如果你只是想顯示元素,如果用戶有JavaScript我會插入到DOM,就像你用CSS隱藏它,你可以受到搜索引擎懲罰這樣做。此外,禁用CSS(或某些屏幕閱讀器)的用戶也可以訪問該內容。但這只是我的觀點 – Pete 2013-03-13 15:09:22

+0

@Pete,搜索引擎足夠聰明,可以忽略隱藏着'display:none'的內容,但如果有很多內容被'text-align'擠出視線,他們可能會懲罰你。當然,「搜索引擎」的意思是「Google」。 – zzzzBov 2013-03-13 15:11:03

回答

6

DOM操作是最昂貴的。顯示現有代碼比注入代碼快。

+4

雖然這是事實,但JavaScript中的性能很少成爲問題,因爲頁面通常具有多少空閒時間。 – zzzzBov 2013-03-13 15:07:54

+0

還允許您在每次想要設置特定元素的樣式時不用運行js就對頁面進行樣式設置。 – Liam 2013-03-13 15:09:43

+0

另外,有人沒有JS的情況並不常見,所以額外的代碼會被使用得更多。所以大多數負載將調用一個JS函數,它會生成一個元素,然後將CSS規則分配給它......這肯定是效率較低,然後只顯示一個隱藏的div。 – 2013-03-13 15:14:01