相关疑难解决方法(0)

如何强制WebKit重绘/重绘以传播样式更改?

我有一些简单的JavaScript来实现样式更改:

sel = document.getElementById('my_id');
sel.className = sel.className.replace(/item-[1-9]-selected/,'item-1-selected');
return false;
Run Code Online (Sandbox Code Playgroud)

这适用于最新版本的FF,Opera和IE,但在最新版本的Chrome和Safari上失败.

它会影响两个后代,这些后代恰好是兄弟姐妹.第一个兄弟更新,但第二个没有.第二个元素的子元素也具有焦点,并包含<a>标记,该标记在onclick属性中包含上述代码.

在Chrome"开发人员工具"窗口中,如果我轻推(例如取消选中并检查)任何元素的任何属性,则第二个兄弟会更新为正确的样式.

是否有一种解决方法可以轻松地以编程方式"轻推"WebKit做正确的事情?

css safari webkit google-chrome

243
推荐指数
9
解决办法
17万
查看次数

何时在DOM环境中进行重排?

什么类型的活动会触发带有DOM的网页重排?

似乎有不同的观点.根据http://www.nczonline.net/blog/2009/02/03/speed-up-your-javascript-part-4/,它发生了

  • 添加或删除DOM节点时.
  • 动态应用样式时(例如element.style.width ="10px").
  • 当您检索必须计算的度量时,例如访问offsetWidth,clientHeight或任何计算的CSS值(通过DOM兼容浏览器中的getComputedStyle()或IE中的currentStyle).

但是,根据http://dev.opera.com/articles/view/efficient-javascript/?page=3,只有当已经排队的重排操作时,测量才会触发重排.

有没有人有更多的想法?

javascript performance dom reflow

50
推荐指数
1
解决办法
3万
查看次数

标签 统计

css ×1

dom ×1

google-chrome ×1

javascript ×1

performance ×1

reflow ×1

safari ×1

webkit ×1