3

嗯,这很莫名其妙。目前正在做一个项目,当我遇到这个问题时。

我在内容区域上有一个背景图像,用background-attachment:local和定义background-position:bottom right。出于某种原因,当位于其上的任何元素以某种方式发生更改(基本上是任何导致内容重绘的原因)时,背景图像的相应部分在 Chrome 中被删除,显示下面的纯背景颜色。尝试在 Inspector 中对此进行诊断是徒劳的,因为即使在编辑 CSS 值时按下箭头键也会导致它重新计算背景图像并且一切都回来了。

不幸的是,我无法提供 Fiddle,因为我似乎无法在不重新实现整个网站的情况下重现该错误,目前这是不可能的,因为它处于私有 Alpha 阶段。

这与我在 Chrome 中遇到的第一个重绘错误相去甚远。例如,我拥有的一个元素会通过从 更改overflowhidden来显示“编辑”按钮visible,然后在鼠标离开时再次返回 - 在所有其他浏览器中这很好,但 Chrome 会将编辑按钮留在那里,直到您滚动。

所以我想我的问题是:“有没有人听说过这样的问题,有没有办法在 Chrome 中强制重绘?”

4

2 回答 2

0

在覆盖 div 的非常奇怪的情况下,我开始发生类似的事情。一开始它不会完全绘制 div。如果我将鼠标悬停在它上面,那么它将部分绘制鼠标所在的位置,如果我突出显示它,那么它将完成整个元素的绘制。我的元素是绝对定位的。我也无法在小提琴中重现该问题。

我知道这不是这里列出的确切情况,但是我在寻找 chrome 中的重绘问题时发现了这个问题,尽管我至少会发布这个问题,因为它对我有用。

我会附加div:

document.getElementById(targetParent).appendChild(myDiv);

并在我使用的那条线之后强制重绘

setTimeout(function(){ myDiv.style.zIndex = 6; },5);

z-index 已经是 5,所以我将它增加了 1。增加它会导致重绘。我知道你可能认为 6 解决了分层问题,但我尝试了 500 的基本级别,它仍然重现了同样的问题。我试过$(myDiv).show().hide()了,但这并没有强制重绘元素。

于 2013-06-14T22:09:44.510 回答
0

这是我专门用于 Chrome 版本 38 的修复程序。

if (window.chrome && parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10) === 38) {
  console.log('You are using chrome version 38.');
  window.setInterval(function() {
    $('body').css('overflow', 'hidden').height();
    return $('body').css('overflow', 'auto');
  }, 0);
}

希望这可以帮助!

于 2014-10-09T00:22:44.107 回答