如何替换CSS表达式

时间:2013-05-17 18:33:46

标签: html css css-expressions

我有一个用于时间表输入的旧ASP Web应用程序,它充满了CSS表达式。它们出现在CSS文件中:

.ApptPage {
    position            : relative;
    height              : expression(Math.max(document.body.offsetHeight-this.offsetTop-document.body.marginTop,0));
    border              : 0 solid black;
}

并在ASP中:

<IFRAME SRC="TimeSheetView.asp?<%=sQueryStandard%>" id=frameContent style="border-left:0;position:absolute;top:0;width:expression(Math.max(0,divContent.offsetWidth-20));height:expression(Math.max(0,divContent.offsetHeight-this.offsetTop));border:0px;left:0px;"></IFRAME>

该应用程序适用于IE,但经过10多年的使用,我们希望为未来10年做好准备,并使其与浏览器无关。

这是我第一次在CSS中看到一个表达式而我却找不到替代它的方法吗?有没有人有建议?

3 个答案:

答案 0 :(得分:0)

这些表达式特定于IE,但已被弃用和弃用,即使是IE

参考:http://msdn.microsoft.com/en-us/library/ms537634%28v=vs.85%29.aspx

  

从Windows Internet Explorer 8开始,动态属性已经存在   不推荐使用,仅支持IE5中显示的网页   (Quirks)模式或IE7标准模式。

  

不再有动态属性(也称为&#34; CSS表达式&#34;)   在Internet Explorer 8及更高版本中支持,在IE8标准模式和   更高。

您可以使用JavaScript或CSS或两者的组合来实现这些表达式的功能。

答案 1 :(得分:0)

我不确定表达式的计算方式是什么/如何,但我在http://help.dottoro.com/给出的描述和示例的帮助下,解决了类似的问题(即我需要动态高度)。只需在搜索字段中逐个输入术语(offsetWidth,offsetHeight,offsetTop,marginTop),然后按Enter键。

但是你应该具备javascript的工作知识。因为这是您必须使用它来替换这些表达式。 CSS前端有关于动态维度的开发,但IE7-9不支持这些样式,因此没有用。

答案 2 :(得分:0)

在IE11中,不支持使用表达式的动态CSS。现在,你可以做两件事。

  • 更改特定元素的高度

    var singleElement = document.getElementById("yourElement");
    if (singleElement)
     singleElement.style.height =
              Math.max(document.body.offsetHeight-this.offsetTop-document.body.marginTop,0) + "px";
    
  • 更改&#39;身高&#39;使用类

    的所有元素的值
    var allElements = document.getElementsByClassName("ApptPage");
    //Now loop through 'allElements' and set singleElement.style.height