2

我有一个用于时间表条目的旧 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 中看到表达式,我不知如何找到替换它的方法?有人有建议吗?

4

3 回答 3

0

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

不过,您应该具备 javascript 的工作知识。因为那是你必须用来替换这些表达式的东西。在 CSS 方面有一些关于动态尺寸的发展,但 IE7-9 不支持这些样式,所以没有用。

于 2013-05-17T19:08:18.947 回答
0

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

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

从 Windows Internet Explorer 8 开始,动态属性已被弃用,仅支持以 IE5(Quirks)模式或 IE7 标准模式显示的网页。

Internet Explorer 8 及更高版本、IE8 标准模式及更高版本不再支持动态属性(也称为“CSS 表达式”)。

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

于 2013-05-17T18:52:22.983 回答
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";
    
  • 更改使用该类的所有元素的“高度”值

    var allElements = document.getElementsByClassName("ApptPage");
    //Now loop through 'allElements' and set singleElement.style.height
    
于 2015-05-07T13:20:39.827 回答