I’m attempting to animate the slide-out of a menu with script. To do this, I need to animate the marginTop property of an element and increment it from -30px to 0px.
However, in IE8, the animation simply does nothing. I’ve traced this down to the fact that setting marginTop in script seems to have no effect. In Chrome and Firefox, this works fine.
Here’s an example that will work with Chrome/Firefox, but not IE:
Is this an IE bug, and if so, are there any workarounds for this behavior? Thanks!
Update:
Here’s some screen shots of the bug.
In Chrome, my Fiddle looks like this (You can see the “Name of new menu” text, since we changed the margin with script)

In IE8/Vista, it looks like this. I can confirm in Developer Tools that topMargin is actually 0px as expected, however the elements were not re-drawn:

Another Update:
This bug repros (at least for me) on IE8 running on Windows 7, and also IE8 running on Windows 2008 Server. It does NOT repro for me on IE7 running on WinXP. I do not have any IE9 machines to test it.
Yet Another Update:
I found one potential work-around. If I set p.newmenu to position: absolute; instead of position: relative; then it works. However, in my case I’m hosting this entire thing in a popup menu and need this control to push out the bottom of the modal dialog, so absolutely positioning it is not an option. However, perhaps this knowledge can help in finding a workable solution. An example of this work around can be found here.
Would You Believe Another Update?:
I did find a workaround for now. If I use top: -30px; instead of a negative top margin, then everything works. top behaves a bit differently than a margin, though, and makes the UI not look quite as nice. In particular, when you use top: -30px, then you’ll have 30px of whitespace under your element since relative positioning doesn’t affect other page flow.
I’d greatly like to figure out why I can’t use a negative top margin on IE like I can with other browsers, so I’m still hoping someone can provide an answer that will provide all the benefits of a negative top margin but also work with IE8.
The trigger for this behaviour is how IE8 handles the fieldset element.
You can work around it by setting the display for fieldset to inline (or inline-block).