@bazz: The html is actually for a single page AJAX web app, which is built using the ExtJS JS framework, so the html is all dynamically rendered, and that is the reason for the use of both classes and in-line styles. Unfortunately there is not much I can do on that part. The real issue is that there are two div's on the page at any time with the x-combo-list class, and the id's are dynamically generated, and the only way to target specifically the combo-list that is open is using the visibility style that gets automatically updated by ExtJS when the combo-list opens (that is why the inline-styles are there, because ExtJS uses them for dynamic changes rather than classes for some reason). I have also considered using the "nth-of-type" and other pseudo-class selectors, but the problem is that I am using the Selenium automated testing framework (that is what is using the css to target elements), and Selenium does not support the pseudo-classes that would be of any use to me! Hopefully that explains the problem in a bit more detail?
@drhowarddrfine: In the "various combinations" I experimented with, I tried all combinations I could think of including: no semi-colons, single quotes around the value, double quotes around the value, no quotes around the value, just the "visible" part without "visibility:" prefixing it, and none of these worked to locate that particular div in IE.
Also to further emphasize that I don't think its particularly a CSS2 vs 3 problem, is that I can use the [attr~='val'] and [attr*='val'] etc. on other attributes (class, name, autocomplete, etc.), it just doesnt pick up the values associated with the "style" attribute. That is the strange part to me.