How can I force WebKit to redraw/repaint to propagate style changes?

后端 未结 27 2712
我寻月下人不归
我寻月下人不归 2020-11-22 02:04

I have some trivial JavaScript to effect a style change:

sel = document.getElementById(\'my_id\');
sel.className = sel.className.replace(/item-[1-9]-selected         


        
27条回答
  •  滥情空心
    2020-11-22 02:40

    This will force repaint while avoid flickering, existing element tinkering and any layout issue...

    function forceRepaint() {
        requestAnimationFrame(()=>{
          const e=document.createElement('DIV');
          e.style='position:fixed;top:0;left:0;bottom:0;right:0;background:#80808001;\
                   pointer-events:none;z-index:9999999';
          document.body.appendChild(e);
          requestAnimationFrame(()=>e.remove());  
        });
    }
    

提交回复
热议问题