CSS填充在IE8 / jquery中消失

时间:2011-01-27 15:05:56

标签: javascript jquery css internet-explorer-8 padding

这是一个奇怪的,已经吃了很多时间。这是一张照片,因为我只能输入1个链接:http://www.screencast.com/t/byVmPE6H。解释如下。

基本上,我需要实现的是照片中的第1点。

请注意左边的填充比右边的填充要大。初始填充属性为:

padding: 12px 15px;(即12px垂直填充,15px水平)。

然后,通过jquery,在页面加载时,我将左侧填充设置为某个值,如下所示:

$(links[0]).attr("style","padding-left : "+padding+"px;");(我可以使用.css(),效果和问题保持不变)

除了IE之外,你猜对了,所有浏览器都能很好地工作。我不是在谈论版本6或7,而是只讨论IE 8.因此,在IE 8中,在页面加载时,我从上面的照片中得到第2点。

请记住,这只发生在页面加载上。在我用链接上的指针(即触发鼠标悬停事件)之后,右边的填充跳回原位并且它看起来很完美,就像在第一个链接中一样(实际上第一张照片来自IE8!)。

消除上面的jquery行不会触发相同的行为,15px填充是可以的。在链接上没有为“mouseover”注册事件处理程序。鼠标悬停只有这个css属性:

#navigation li.first:hover a{

background: transparent url(../images/menu_on_left.png) left top no-repeat;

}

(即只改变背景图像,绝对没有别的)

因此,当页面加载时,如果我使用jquery来改变左边的填充,那么右边的填充会消失。鼠标悬停时,右边的填充会弹回到视图中。我无法解释为什么会发生这种情况。如果我找不到解决方案,我实际上正在考虑计算所有菜单项的位置并用位置排列它们:绝对。听起来很糟糕,我知道。

有人可以开导我吗?

1 个答案:

答案 0 :(得分:0)

我终于解决了它,并提防: IE是如此愚蠢,如果你有一个浮动元素的列表,你改变了第一个的正确填充,另一个没有通过向右移动做出反应,他们只是站在那里。所以我做的是:

  1. 删除所有其他菜单项(通过clone()然后删除(),不幸的是,我没有jquery 1.4可用或我会使用detach(),但它工作正常),

  2. 通过css()

  3. 更改填充
  4. 重新插入其他菜单项。现在,他们感觉到第一个项目上的新填充并且位置正确。

  5. 疯了,不是吗?只是另一个IE恨我的理由......

    我希望这有助于任何人,祝你有愉快的一天!