首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在向dom元素添加类后强制ie8重新绘制

如何在向dom元素添加类后强制ie8重新绘制
EN

Stack Overflow用户
提问于 2012-12-09 09:37:21
回答 6查看 16.1K关注 0票数 20

在ie8中,如果在更改类名时元素没有“重绘”相关的css,如何才能强制浏览器刷新而不会降低ie8性能呢?

这篇文章(How can I force WebKit to redraw/repaint to propagate style changes?)建议调用强制重绘的offsetHeight。

这篇文章(http://www.tek-tips.com/viewthread.cfm?qid=1688809)有一个评论,建议在body元素中添加和删除一个类。

这两种方法都会降低ie8的性能,并且第一种方法对我的布局有副作用。

最好的方法是什么?

EN

回答 6

Stack Overflow用户

发布于 2012-12-09 09:37:21

对于我的ie8问题,我想出的解决方案是在我正在更改的元素的近父元素上添加/删除一个类。因为我使用的是modernizer,所以我检查ie8,然后执行这个添加/删除动作来获得新的css来绘制。

代码语言:javascript
复制
        $uicontext.addClass('new-ui-look');
        if ($('html').is('.ie8')) {
            // IE8: ui does not repaint when css class changes
            $uicontext.parents('li').addClass('z').removeClass('z');
        }
票数 24
EN

Stack Overflow用户

发布于 2014-01-17 03:44:19

这个问题的正确答案是,您需要实际更改content规则。

代码语言:javascript
复制
.black-element:before { content:"Hey!"; color: #000;}
.red-element:before { content:"Hey! "; color: #f00;}

注意,我在.red-element上的Hey!后面添加了额外的空格

票数 9
EN

Stack Overflow用户

发布于 2015-01-29 20:37:33

可笑的是,这是可行的:

代码语言:javascript
复制
function ie8Repaint(element) {
    element.html(element.html().replace('>', '>'));
}

实际上,DOM中没有任何更改,因此它不会影响任何其他浏览器。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13783840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档