Css Expression在IE11中不起作用

时间:2015-05-26 05:17:14

标签: css internet-explorer-11 css-expressions

我们使用旧版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中开展工作以及其他方式?

如何更改我的代码?

2 个答案:

答案 0 :(得分:3)

  • 如果您感到懒惰或不想使用JS,请尝试设置文档模式:

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

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

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

为什么要避免使用CSS表达式:

  

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

     

- CSS expressions no longer supported for the Internet zone

此外,

  

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

     

- Page Speed: Avoid CSS expressions (deprecated)

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

答案 1 :(得分: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