我有一个用于时间表输入的旧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中看到一个表达式而我却找不到替代它的方法吗?有没有人有建议?
答案 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