这是一个奇怪的,已经吃了很多时间。这是一张照片,因为我只能输入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来改变左边的填充,那么右边的填充会消失。鼠标悬停时,右边的填充会弹回到视图中。我无法解释为什么会发生这种情况。如果我找不到解决方案,我实际上正在考虑计算所有菜单项的位置并用位置排列它们:绝对。听起来很糟糕,我知道。
有人可以开导我吗?
答案 0 :(得分:0)
我终于解决了它,并提防: IE是如此愚蠢,如果你有一个浮动元素的列表,你改变了第一个的正确填充,另一个没有通过向右移动做出反应,他们只是站在那里。所以我做的是:
删除所有其他菜单项(通过clone()然后删除(),不幸的是,我没有jquery 1.4可用或我会使用detach(),但它工作正常),
通过css()
重新插入其他菜单项。现在,他们感觉到第一个项目上的新填充并且位置正确。
我希望这有助于任何人,祝你有愉快的一天!