最近我想知道如何編輯元素樣式,而不是通過在dom上切換其類,而是通過更改css類或選擇器的實際規則集。 因此,而不是像css:更改規則集與使用選擇器切換類/應用樣式
$('.some').hide()
或
$('.some').addClass('hidden')
爲什麼不改變直接與document.styleSheets
和東西的規則? 這種方法不會更普遍,至少在許多元素的情況下,我們會讓瀏覽器處理規則集本身的變化嗎?
例如,您可以將樣式添加到.some
,如display: none;
和所有.some
元素都將被隱藏起來。不需要遍歷js中的所有元素並手動隱藏它們(如上面的示例)。
直接更改規則集會更有可能鼓勵具有上下文感知的類(或者您可以稱之爲..),因爲您會隱藏所有#persons > .item
或其他內容。
我仍然不知道關於這一點被命名爲背景,例如像控制的名字,像.calendar
.ticket
.item
類,與單功能的類最佳做法,像.hidden
.left
.green
,因爲我通常需要兩種類型的約定。
我只是問你對這個有什麼想法,修改樣式表方法的好處和缺點與像jquery這樣的庫如何處理更改樣式有什麼關係?
另外,你認爲什麼是好的做法,你認爲更多的是什麼?
咳嗽 JavaScript和黑客咳嗽
嗯,那是真的。但是,如果您通過代碼添加樣式表,那麼您擁有所有對它的引用,如果其最後/最新樣式表基本覆蓋其他樣式。那麼把迭代的部分拿走,並說js會在它自己的樣式表中創建自己的規則......所有這些都包裝在一個漂亮的api中? –
@sharpjohnny:這不值得。如果你打算這樣做,你可以直接將樣式添加到每個元素,這樣你就不會與級聯發生衝突。通過操作元素的'className'屬性可以添加/刪除類 - 一旦你完成了瀏覽器接管並完成它的功能**比JavaScript更快的速度**可以做到這一點。 –