3

我们使用旧版本的 IE7 开发了一个应用程序。

并且代码包含“CSS 表达式”,但这在 IE11 中不起作用。

示例代码:

div#GridViewContainer
        {
            position: relative !important;
            width: 1000px !important;
            overflow: auto !important;
        }
        _:-ms-fullscreen, :root .staticHeader
        {
            position: relative !important;
            top: expression(this.offsetParent.scrollTop);
            z-index: 99 !important;
        }
        _:-ms-fullscreen, :root .StaticColumn
        {
            z-index: 90 !important;
            border: 1px solid gray !important;
            position: relative !important;
           left: expression(document.getElementById("GridViewContainer").scrollLeft);
        }

如何在 IE11 和其他方法中工作?

如何更改我的代码?

4

2 回答 2

3

或者

  • 如果你懒惰或者不想使用 JS,可以尝试设置 Document 模式:

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    

    将其添加到该<head>...</head>部分。

    请注意,这可能会破坏您可能使用过的 IE7 不支持的属性。


为什么你应该避免使用 CSS 表达式:

从 Internet Explorer 11 开始,不再为 Internet 区域中加载的网页启用 CSS 表达式。当页面以 IE7 标准模式或 IE5 quirks 模式呈现时,在其他区域(例如 Intranet 区域)中加载的页面支持 CSS 表达式。

- Internet 区域不再支持 CSS 表达式

还,

不幸的是,CSS 表达式带来的性能损失相当可观,因为每当触发任何事件(例如窗口调整大小、鼠标移动等)时,浏览器都会重新评估每个表达式。CSS 表达式的性能不佳是它们现在在 IE 8 中被弃用的原因之一。如果您在页面中使用过 CSS 表达式,则应尽一切努力将其删除并使用其他方法来实现相同的功能

-页面速度:避免 CSS 表达式(已弃用)

条件评论应该像Leo Caseiroin在他的回答中所建议的那样工作,它实际上会在 IE7+ 上为您节省一些带宽。

于 2015-05-26T05:23:52.067 回答
1

我建议你用你的技巧分割你的文件,然后,你可以使用 IE 的条件注释,如下所示:

<link href="css/ie11-without-hacks.css" rel="stylesheet">
<!--[if lt IE 7]>
    <link href="css/ie7hacks.css" rel="stylesheet">
<![endif]-->

关于条件注释: https ://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx

于 2015-05-26T05:25:15.917 回答