About Dynamic Properties: Ever heard of IE’s CSS “expression” property? It allows you to set a CSS property not to a constant, but to the result of a JavaScript expression. Like this:
p
{
width:expression(400 + "px");
}
What this lets you do, according to this really good article, is make IE emulate the max-width CSS property that it really should support like all other good browsers. Like this:
p
{
max-width:800px;
width:expression(document.body.clientWidth > 800? "800px": "auto" );
}
Ugly hack, but crappy browsers will do that.
Incidentally, this hack is as good as worthless under Windows XP SP2. I tried it, and I got something I've never seen before:
A little sound effect went off, and a yellow bar appeared under the address bar explaining that "for my protection" the page had been prevented from "displaying ActiveX content."
It gave me the option to allow it, but what good is that? Too bad -- this was a nice way around a stupid, stupid limitation of IE.
I think a lot is going to change in the client-side scripting since SP2 blocks most of the JS hacks.
I agree. Very sad, really -- this was a good way to get IE to do what you wanted, not to mention a great tool for intranet developers standardized on IE.
The ActiveX warning with XP SP2 is not just targeted at JS hacks. Just including an empty script element will cause it to fire.
I know the comments are very old but when you upload your website you shouldnt have the yellow bar appear. It only appears when the file is locally for me
We found a number of machines would hang or otherwise behave weirdly when expression() was used with IE. There may have been other factors like spyware involved.
I can corroborate Satya's comment. Especially, minimizing IE and trying to come back to the browser will hang if expression() is included in a page's CSS. Too bad; it would have been useful.
I realize that this comment comes almost a year and a half following the last one, but I thought I'd add this: that expression() in css is a javascript line, and any script blocker will block it or inform you that a site is using scripts. Javascript is client-side meaning that it is working on your machine. Things like the markup, php or asp, cgi, or whatever are server-side, but scripts like Javascript will be recognized as some kind of Active-X addon. In this case it's an IE Active-X control that allows expression() css hacks to be utilized.
I realize that this comment comes almost a year and a half following the last one, but I thought I'd add this: that expression() in css is a javascript line, and any script blocker will block it or inform you that a site is using scripts. Javascript is client-side meaning that it is working on your machine. Things like the markup, php or asp, cgi, or whatever are server-side, but scripts like Javascript will be recognized as some kind of Active-X addon. In this case it's an IE Active-X control that allows expression() css hacks to be utilized.
hi guys...
i found it...i am not sure that it will run in all browsers ???
i will check it out. till then u all try your all self.
I tend to use these sort of hacks to fix IE specific margins and other quirky behaviour. All good browsers completely ignore it, and I don't see much difference between these expressions and other CSS hacks.
I never thought there's a thing like css expression. Is this backward compatible? I will definitely try this one. Thanks!