同伴們,我最近偶然發現了一些相當奇怪的東西,基本上破壞了我正在處理的網絡應用程序......我通過(vanilla)javascript添加到HTML元素中的css屬性,似乎是異步的證明我有一個小小的一段代碼...通過vanilla JavaScript異步將css樣式添加到HTML元素中?
...
_(leftView).addClass('notrans');
_(rightView).addClass('notrans');
if (fromLeft) {
if (!rightFocused) {
_(leftView).css({ 'left' : '-100%' })
_(rightView).css({ 'left' : '-50%' });
} else _(leftView).css({ 'left' : '-50%' });
}
if (fromRight) {
if (!leftFocused) {
_(leftView).css({ 'left' : '100%' });
_(rightView).css({ 'left' : '150%' });
} else _(rightView).css({ 'left' : '100%' });
}
_(leftView).removeClass('notrans');
_(rightView).removeClass('notrans');
...
注意:您看到無處不在的小底線,是我製造和測試一個小型圖書館......而我99%肯定的是,CSS,添加類並刪除類功能的工作。
現在,問題是,當我到達代碼的remove類部分(最後兩行)時,CSS似乎還沒有被應用。所以當它終於做到的時候,我已經刪除了notrans類,並且元素將會隨着轉換而不是無。這可以通過一個1ms的超時來解決,但是會破壞一些其他的東西......所以有人知道通過JS添加CSS屬性是否是異步的,以及如何解決它?:)
Aske K.
你能告訴我們庫代碼*實際上添加並刪除樣式*?此外,它不是香草,它是一個圖書館:它只是一個你寫的圖書館。 – msanford
這裏有多少元素受到影響?如果數量非常大,可以說超過5,000,那麼渲染引擎可能沒有完成渲染並計算在css中所做的更改。如果它更像100個元素,那麼情況可能並非如此。 –
@TravisJ這不會使它異步。 – zfrisch