Wednesday, April 2nd, 2008

IE 8 strict mode doesn’t allow for CSS opacity?

Category: Browsers, CSS, IE

Howard Rauscher tipped us off to this IE 8 ticket that talks about how opacity and IE 8 strict mode do not jive:

Description

IE8 Strict Mode correctly omits the filter: alpha(opacity=xx) in CSS
which allows the user to specify the opacity in pre-IE8 browsers but
does not implement the CSS3 opacity setting. While I understand that
opacity is part of the CSS3 spec which is not finalized, this leaves
developers with an odd regression in functionality where it is no
longer possible to change opacity on css elements (where as it was
with IE 5.5, IE 6.0, IE 7.0, Mozilla Firefox, Apple Safari, among
others).

Comments

So the fact that this has been labeled as by design suggests that IE8
will be the only browser produced in the last 10 or so years that will
not support opacity in its strictest mode. Thats rediculous. I
understand the wish to be standards compliant but how hard is it to
implement reading the css3 opacity tag (even if it still makes use of
the filter, at least it will exist as a future standards equivelant
tag).

At some point standards has to give way to usability. Mozilla, Opera,
Apple all realize that a few tags that maybe are not official CSS 2
spec still need to be available. If major functionality is missing
from the standards compliant version of IE8, who will use it, even if
it is standards compliant.

You’ll have a whole host of websites that are standards compliant but
need a few features unavailable in standards compliant mode. So these
websites will be setup to use IE7 mode. And then when IE9 comes out
you’ll have to deal with compatibility issues all over again.
Posted by Ames on 3/17/2008 at 3:59 PM

A pretty crazy regression no?

Posted by Dion Almaer at 9:13 am
26 Comments

++++-
4.4 rating from 47 votes

26 Comments »

Comments feed TrackBack URI

Did they take the ticket down? The link goes to a Page Not Found page:

The content that you requested cannot be found or you do not have permission to view it.

If you believe you have reached this page in error, click the Contact Us link at the bottom of the page to report the issue and include this ID in your e-mail: a9ae975d-7fe0-4fdd-8fd2-998b92539219

Comment by Smokinn — April 2, 2008

Here is a screen shot of the ticket

http://howardr.s3.amazonaws.com/no-css-opacity.png

Comment by howardrauscher — April 2, 2008

Microsoft has been trying to kill itself for 15 years. They are trying very hard to piss off their users. It’s amazing they are still around.

That’s the reason why they do the things they do.

Comment by pkenoyer — April 2, 2008

telling ms to search google :)

Comment by amullins — April 2, 2008

Eh, WTF?

Why do they close the ticket? Is this bug database only for IE 8? Will they open a new one for IE?

Why not just set the status to “Future”?

Comment by Jeria — April 2, 2008

Above should be “a new one for IE 9”.

Comment by Jeria — April 2, 2008

When my users suddenly won’t be able to see the background picture under some of my site’s elements after upgrading to IE8, my plan is to explain that’s IE’s fault and advise them to switch to one of the other browsers, with benefits for all parties, MS excluded.
I think that they’ll probably believe me, because they’re community sites so I can prepare the users to the bad news. Furthermore if it worked with IE6 and it kept working with IE7 and with all the other browsers and it breaks just after the switch to IE8, well… who’s the culprit?
With a little luck and some help from MS I’ll be able to migrate some of my users to the browsers I like to develop for.

Comment by pmontrasio — April 2, 2008

This is a day late, right? You’ve gotta be kidding me.

Comment by Matt — April 2, 2008

Apparently, the short form doesn’t work but the long form does:

filter:alpha(opacity=value) vs. filter:progid:DXImageTransform.Microsoft.Alpha(opacity=value)

There’s some discussion of this in this post:
http://www.css3.info/css3-features-in-ie8/

While this is “by design”, I fully expect that opacity will be added by the next version.

Comment by jonathansnook — April 2, 2008

This makes perfect sense to me. Including why they closed the ticket as ‘As Designed’.

Microsoft wanted to be more compatible with existing web sites, compatibility over standards. Their extreme take on it though angered a lot of web developers, created a lot of external pressure, and they caved in and said FINE, we’ll make standards a priority.

Now us developers want an exception made (since the CSS 3 proposal for Opacity isn’t finalized) in order to have compatibility with sites that use opacity.

So Microsoft responds with a ‘No, you forced us to have standards, you eat your own dog food’ sort of message by marking the bug ‘As Designed’.

So I only see three possible outcomes:
1. Microsoft remains a stubborn child brat and ships a web browser where in default standards mode opacity and other things are broken.
2. Microsoft grows up and realizes that the adult thing to do is to either implement the CSS 3 proposal or allow the IE only opacity setting to work.
3. Microsoft does a total reversal back to IE7 quirks mode being the default engine by using this as ‘proof’ that it’s what the web developer community really needs/wants. They will also claim that they just don’t have enough resources to do anything else other than this.

Any bets on which option Microsoft chooses?

Comment by Sembiance — April 2, 2008

hmm… what’s the story on RGBA though? For backgrounds (where, frankly I use opacity 99% of the time) background-color:#3339; would be better for me than opacity on the object itself… since the text would go semi-transparent with opacity but not so with RGBA.

As for image opacity… so long as png alpha support isn’t slower than a sloth on downers like in IE7 we may have the transparency we need there.

I’m certain there are cases where these things don’t compensate for lack of opacity (‘greying out’ graphical buttons come to mind, ‘fading’) but it might not be the end of the world. Just a pain.

Comment by tack — April 2, 2008

Each step of the way it is difficult to not get the sense that Microsoft is deliberately sabotaging web development. They are frightened of web applications in general, and those that do not use their proprietary software specifically.

They are trying to sabotage the development of ECMA4. They are completely ignoring the existence of SVG and Canvas. I imagine someone gave themselves a real good pat on the back when they discovered they could spin the demand for better standards support in such a way as to remove the ability to use opacity.

If they are going to play this game, well they might as well go all the way and remove support for all of their proprietary tags, filters, expressions, and other features for IE 8 strict mode. Remove innerHTML, tabindex, VML, and so forth. I’m sure they would love an excuse to remove VML, then there would be no way to create cross-platform vector graphics without a plugin.

Comment by GregHouston — April 2, 2008

The work to enable filters in the new IE8 layout mode unfortunately did not make the Beta 1 release. However, work on the feature set is currently underway and filters are still planned for inclusion in the final release.

My only explanation for why the reported bug was resolved as “by design” was that whoever resolved it as such understood the story only for Beta 1 – that the feature set was indeed missing in that release. Sorry for the confusion this has caused. Perhaps a better resolution would have been “fixed in later build” where “later build” meant before IE8 RTM.

Thanks –
–Scott
Internet Explorer Team

Comment by IEScott — April 2, 2008

Thanks for the update Scott.
I guess I should have added a forth option:
#4 Microsoft made a mistake closing the bug “as designed” and intends to ensure opacity works in IE8 standards mode before IE8 releases.

Comment by Sembiance — April 2, 2008

Long Live Quirks Mode!

Comment by wwwmarty — April 2, 2008

Why should this surprise us? IE7 doesn’t really handle alpha channels all that well as it is: http://www.quirksmode.org/bugreports/archives/2007/02/Cant_have_both_PNG32_and_alphaopacity_in_IE7.html

Basically, it can be transparent, but if you try to adjust the image with another opacity like a JS fade in, it freaks out.

Basically means that IE 7 doesn’t support transparent PNGs either.

Comment by Jon Hartmann — April 2, 2008

Ditto on IE7 not supporting alpha well. Another “feature” is that if you put text on top of a transparent png, it isn’t anti-aliased.

Comment by JonathanLeech — April 2, 2008

Yeah, I noticed that at the same time I noticed the problem with the opacity… my beautiful JS notification system looks like a black blob of gunk… Gonna have to find an IE 6 install to compare against and degrade as well, since it looks like I’ll just have to serve the same to IE 6 and 7 and a better version to FF & Safari…

Comment by Jon Hartmann — April 2, 2008

@tack: RGBA doesn’t have a hex representation, you would use rgba(51,51,51,0.6) instead of #3339. It sure would be nice if IE supported the CSS3 Color module, which includes RGBA as well as HSL and HSLA. When it comes to backgrounds though, what I think we really need is a background-opacity property.

Comment by Matt — April 2, 2008

Um. Aren’t we the same people who were clamoring for MORE standards compliance from Microsoft?

Comment by naikrovek — April 3, 2008

I noticed this opacity issue on IE8 Beta1, but I just assumed it was a beta issue that MS hadn’t fixed yet. Interesting to read that it’s known, and all-but deliberate.

I think a little reality is needed and the non-standard technique should be supported until a standard-compliant one can be implemented in the browser. The regression is quite odd.

Comment by mike08 — April 3, 2008

I wouldn’t be the least bit surprised if there’s an ms-opacity in IE8 final.

Comment by Trevor — April 3, 2008

I also want to comment on the idea that this is MS acting according to “standards” because “developers demanded it”. While it’s true that a lot of developers have clamored for IE to support web standards, I think framing it that way is a bit disingenuous. The clamor, regardless of language, is for interoperability, using standards as a medium to achieve that. Hell, the IE team has addressed that specifically and their claim is to support interoperability over strict adherence anyway.

It does a disservice both to the efforts of so-called standards compliant browsers (which should be phrased interoperable browsers which support a broader range of the standards specifications, rather than browsers which adhere to standards—but that’s a mouthful and not very fun to write or read) and to the developers who’ve been trying to advance web functionality for about a decade, against the arbitrary limitations and downright incompetence of the software giants (first Netscape then MS).

It’s important when framing the standards “debate” to be clear what we standards advocates really want: we want our code to work in any browser. And we want our code to be predictable to write according to spec, even if the spec is “unofficial” (and the legitimacy of the standards orgs should be called into question as a subset of this framing; until innerHTML is in a standards spec, it should be clear that the standards aren’t enough).

Furthermore, opacity is part of a standard, the standard simply isn’t finalized. The CSS standards even address how browser developers can extend CSS “legitimately” according to the standard by prefixing their style rules. Apple, Mozilla and Opera are doing this according to spec just fine, and there’s no reason MS can’t be “compliant” (adhering strictly to spec) and include -ms-opacity as a style rule.

Comment by Trevor — April 3, 2008

This is what i use:

filter: ‘alpha(opacity=30)’;
*filter: alpha(opacity=30);

work with IE6~IE8

Comment by wmh — January 21, 2009

Hey, wmh, are you saying you have a way around the
-ms-filter:”progid:DXImageTransform.Microsoft.Alpha(Opacity=50)” mess and that it is no longer needed or what? I want to use opacity properties in DHTML so I need to be able to refer to their CSS style properties and make dynamic changes in Javascript and have it work in ie6-ie8 as well as other browsers. Is there a DHTML DOM-addressable CSS style properties for this IE opacity?

Comment by cssResources — June 16, 2009

spent three hours last night trying to get this bloody thing to work – that’ll teach me for testing in firefox. Am really angry about this as it seems such a reasonable thing for IE to handle. Am off to rant and burn some copies of windows 95 in protest

Comment by michaelbriggs — August 17, 2009

Leave a comment

You must be logged in to post a comment.