我正在尝试用脚本将菜单滑出的动画。为此,我需要对元素的marginTop
属性进行动画处理,并将其从-30px
递增到0px
。
但是,在IE8中,动画什么也不做。我发现这是因为在脚本中设置marginTop
似乎没有任何效果。在Chrome和Firefox中,这很好用。
下面是一个适用于Chrome/Firefox,但不适用于IE的示例:
这是IE的bug吗?如果是,有没有解决这个问题的办法?谢谢!
更新:
以下是该bug的一些屏幕截图。
在Chrome中,我的小提琴看起来像这样(你可以看到“新菜单的名称”文本,因为我们用脚本改变了页边距)
在IE8/Vista中,它看起来像这样。我可以在开发人员工具中确认topMargin
实际上如预期的那样是0px
,但是元素没有被重新绘制:
的另一个更新:
这个bug在Windows7上运行的IE8和在Windows2008Server上运行的IE8上都有问题(至少对我来说是这样)。它不能在运行在WinXP上的IE7上重现。我没有任何IE9机器来测试它。
又一次更新:
我发现了一个潜在的变通方法。如果我将p.newmenu
设置为position: absolute;
而不是position: relative;
,那么它可以工作。然而,在我的例子中,我在一个弹出式菜单中托管了整个东西,并且需要这个控件来推出模式对话框的底部,所以绝对定位它不是一个选项。然而,也许这些知识可以帮助找到一个可行的解决方案。此解决方法的一个示例可以在here中找到。
:你会相信另一个更新吗?
我确实找到了一个暂时的变通方法。如果我使用top: -30px;
而不是负的上边距,那么一切都会正常。然而,top
的行为与边距稍有不同,并且使UI看起来不是很好。特别是,当您使用top: -30px
时,您的元素下面将有30px的空白,因为相对位置不会影响其他页面流。
我非常想弄清楚为什么我不能像在其他浏览器上一样在IE上使用负的上边距,所以我仍然希望有人能提供一个答案,既能提供负上边距的所有好处,又能在IE8上工作。
发布于 2011-12-13 08:39:50
这种行为的触发器是IE8处理fieldset元素的方式。
您可以通过将fieldset的显示设置为inline (或inline-block)来解决此问题。
div.modal.addmenu fieldset {
display: inline;
}
发布于 2011-12-10 09:54:27
这不完全是一个bug;它只是基于这样一个事实(为了跟上性能比较),IE是从5.5版本开始构建的,具有最小的静态定义预设;
这意味着:不要花费任何元素完整而正确的定义(取决于你所支持的规范之神……)对于它的类型,IE使用的更少。
TODO:回馈那些应该作为一个相对定位的顶级段落的行为;根据它的才华来展示它;任何一个超级段落都应该做T型台上的内联块(T型台inline ),即使它是一个笨蛋,你也可以试着用糖和鞭子来记住它起源于内联块的肮脏P。这是一个疯狂的P,给一些尊重它的才华…
DOJO:事实上,作为一个会读符文的脚本-javalchemist,你必须控制浏览器所服务的brew。或者它会无声地发出轰隆声。
GODO:如果你想在不合法播放的浏览器中使用负边距,必须做的事情:
记住你想要使用的元素的显示来源;不要相信浏览器供应商已经在you
不要忘了为你的负边距建立基础:
height:auto;:如果你感兴趣的是IE测试版和更老的测试版,比如5.5或6,你必须确保相对位置的负边距段落有width和height的值;根据你试图实现的目标,有时Beta会有所帮助。
https://stackoverflow.com/questions/8352881
复制相似问题