2012-07-04 63 views
4

設計html界面元素時,這是一種非常常見的情況,DOM根據特定事件顯示/隱藏。我的問題很簡單,但每次遇到這個問題時,我總是想知道:在html中硬編碼元素並簡單地切換顯示屬性(例如使用.show/.hide)或動態添加/移除它們是「更好」根據需要通過JS?兩者都是微不足道的實施,但我不禁想知道他們是如何比較以及是否有任何優勢/缺點使用之一。有些情況下,比如當在幾個地方逐字使用相同的元素時,在你看來動態創建DOM似乎是有意義的,但另一方面在理論上對它們進行硬編碼則更容易維護,因爲你可以移動DOM並根據需要更改它們,只要jQuery的選擇器仍然相同,它們將按預期工作。一般來說,從設計師的角度來看,硬編碼似乎是一種可行的方式,但我期待着可能在這裏忽略的想法和可能的事情。jQuery和動態元素vs顯示CSS屬性

編輯:通過「硬編碼」我的意思是不通過JS插入的元素;也就是說,元素的位置已經在原始html標記的父文檔中指定,而不是由JS指定。

+0

所有情況相同,顯示或隱藏元素比將其添加到DOM或從DOM中刪除元素要快。此外,您可以在通過腳本動態獲取的片段中「硬編碼」標記,因此「動態」和「硬編碼」之間的界限變得模糊。 (Downvote不是我的,順便說一句) –

+0

在很大程度上取決於你將編寫什麼樣的交互作爲設計者,我可以告訴你,有時一個css解決方案比jquery和viceversa更好,但我認爲,大多數當時,僅僅因爲舊版瀏覽器的兼容性,jQuery是一個更好的選擇。 – Paradise

+0

我已經投票決定取消它 – sabithpocker

回答

2

歸根結底,這真的取決於你的應用程序做你正在使用什麼和什麼,但:

  • 靜態標記意味着更多的工作服務器(但只有在動態生成的頁面首先,靜態頁面的效果可以忽略不計)。

  • 動態標記意味着更多的工作爲客戶端,這並不總是一件壞事,這取決於你的目標受衆。

技術上,然而,Graceful Degradation表明,靜態標記是去的方式,因爲理想的是頁面應該保持與腳本禁用(動態標記是一個工作靜態芯之上的任選的層)可以使用。

另一方面,Progressive Enhancement從那裏開始構建,基本上說,因爲我們已經在使用裸骨骼核心,所以我們可以在客戶端的所有圓柱體上觸發,並動態增強靜態標記,優勢在於最新的瀏覽器技術。

例如,jQuery UIjQuery Mobile被設計圍繞逐行增強,因爲它們的策略是具有更豐富的客戶端行爲,一般是通過動態創建的元件暴露的延伸現有的標記。

因此,您的頭銜中的兩個選項都可以並且可以說是應該一起實施。在一般情況下,如果可能的話,爲您的應用程序提供必要的標記以在無腳本平臺上工作,那麼從客戶端增強該標記看起來是個好主意。

+0

很好的答案,謝謝。 – Mahn

2

在更大的應用程序上工作時需要考慮性能,並且在編寫較小的應用程序時沒有太多的性能問題,可以執行您感覺簡單和易於管理的操作。 非常大的DOM可能會殺死移動瀏覽器。很多DOM修改都會影響性能。在更大的應用程序中,最好保持DOM亮度並減少DOM修改。所以簡而言之,當性能沒有被密切關注時,它比慣例更方便。但總是建議保持關注性能和良好實踐。