7

http://jsbin.com/ararar/5/edit

tl; dr 上面的链接是下面进一步描述的问题的一个快速示例。单击 li:s 将其删除,并查看 IE9 或 IE10 中的渲染故障。

在我的团队正在构建的应用程序中,我们有一个搜索结果框,其高度会根据匹配的数量而变化。该元素应用了一个盒子阴影。问题出在 IE9 和 IE10 中,当框变小时。似乎 IE 会“忘记”盒子阴影,而只会重新渲染元素的内部部分。box-shadow 仍然会在调整大小的元素的底部呈现,但阴影的副本通常会留在元素调整大小之前呈现的位置。

如果有任何方法可以解决这个问题,任何信息将不胜感激。

4

3 回答 3

14

我从 Andy 那里得到了解决方案,但我没有在标记中放置一个空元素,而是在父级(带有阴影的元素,而不是调整大小的元素)上添加了一个空的 CSS 伪元素。

.shadowed-element:after { content: ""; }

与 jQuery 中的动画高度完美配合,在动画期间重新绘制,而不仅仅是在结束时。感谢安迪让我走上正轨!

于 2013-07-24T19:12:21.233 回答
5

(我意识到这个答案有点晚了,但我认为值得记录一个有效的解决方案/解决方法。)

我最近遇到了类似的问题。解决方案似乎是在<div>带有框阴影的标签下方添加一个附加标签。确保这两个 s 之间没有边距<div>,并且高度至少与底部阴影的高度一样高,宽度与阴影一样宽。这似乎迫使 IE 重新绘制底部<div>向上移动时阴影所在的区域。

在您的情况下,我使用盒子阴影添加了左右边距,<div>并添加了 "shadow-fix" <div>。你可以在这里看到新版本:http: //jsbin.com/ararar/51/edit

希望对您或其他人有所帮助。

于 2013-05-02T17:32:40.343 回答
0

我添加了这个 css,以便浏览器新删除了多少高度,它现在对你有用吗?

css

#resizing ul li {
 line-height:1em;
 height:1em;
}
于 2013-02-05T09:33:22.630 回答