我想通过CSS表达式来设置div的高度。
基本上它应该设置为视口宽度的一定百分比(比如说90%)。 我尝试了以下代码,但并不起作用:
height:expression(document.documentElement.clientWidth ? document.documentElement.clientWidth : window.innerWidth );
我正在寻找一种跨浏览器的方法来实现这个(IE7+,FF4+,Safari)
我想通过CSS表达式来设置div的高度。
基本上它应该设置为视口宽度的一定百分比(比如说90%)。 我尝试了以下代码,但并不起作用:
height:expression(document.documentElement.clientWidth ? document.documentElement.clientWidth : window.innerWidth );
我正在寻找一种跨浏览器的方法来实现这个(IE7+,FF4+,Safari)
CSS表达式除了在IE中被支持之外,其他地方都不支持(即使在那里,它们也被认为是一个坏主意)。
然而,如果只使用CSS的话,没有真正的另一种方法来实现你所要求的内容。
唯一的替代方案是使用JavaScript,我认为这就是你将要做的事情。
事实上,IE的CSS表达式本身就是JavaScript,它允许相当强大的表达式,但也存在删除布局和脚本抽象层的负面效果。这就是为什么人们对它们不满意,但像你这样的情况需要一些形式的纯布局表达式。
正如我所说,现在CSS中真的没有任何答案适用于你。
未来可能有一些希望,因为Google目前正在尝试一些增强CSS的功能,包括变量。有关此功能的文章在这里:http://johanbrook.com/design/css/webkit-css-variables-mixins-nesting/。但是,我不确定即使使用这个功能也能够满足你所需要的那种表达式。
因此,可能这是一件可能需要在未来继续需要JavaScript的事情。无论如何,现在肯定需要。
你正在结合CSS和JavaScript,这样是行不通的。
你可以只设置height:90%;
(这将占用父元素宽度的90%,而不是整个页面 - 除非div在页面的根目录下)。
否则,你应该创建一个JavaScript块(最好作为onload脚本的一部分),例如...(未经测试)
<body onload="document.divName.style.width=(document.documentElement.clientWidth ? document.documentElement.clientWidth : window.innerWidth)*0.9">
编辑 - 感谢 @Chris 指出问题提问者要求设置高度而非宽度。
我认为 JavaScript 是你唯一的解决方法...
<body onload="document.divName.style.height=(document.documentElement.clientWidth ? document.documentElement.clientWidth : window.innerWidth)*0.9">