jQuery + CSS + IE问题:当页面加载时,隐藏元素会短暂出现

时间:2011-01-11 21:38:51

标签: jquery css hover overflow hidden

有没有其他人经历过下面描述的情景?

为了举例,这是一个非常基本的描述:

#menuHolder包含菜单项(#itemA#itemB#itemC,... #itemZ

在CSS中,我将#menuHolder's溢出设置为隐藏。

使用jQuery,我将#menuHolder设置为minHeight为0,然后在特定元素被鼠标悬停时将其扩展为maxHeight。

在FF,Safari或Chrome中没有问题......但这是IE中发生的事情:

短暂的时间内,#itemA#itemB#itemC,... #itemZ会在IE中加载页面时显示在彼此之上。然后它们消失并且表现正常。

就好像在页面加载之前无法识别溢出:hidden或minHeight。

有什么想法吗?

由于 乙

4 个答案:

答案 0 :(得分:0)

即(如果我没记错的话,至少最多7个)不知道最小高度

解决方案是使用像这样的css

min-height:100px;
height:100px; /* for ie7 */
height:auto !important; /* for all others */

使用像http://html5boilerplate.com

中的一些条件评论技巧来定位ie6 / 7会更好。

答案 1 :(得分:0)

也许你应该在css中使用容器display:none,使用jquery预加载现在不可见容器中使用的任何图像,然后在jquery中使用适当的高度而不是min-和max-当鼠标移除时。

答案 2 :(得分:0)

在某些情况下,这样的事情会起作用:

在页面加载期间不得出现的元素上,将其隐藏在标记中:

<ul id='my_element' style='visibility:hidden'>

然后,在应用jquery效果显示它之前(例如,slideDown()),删除属性并重新隐藏它:

$me = $('#my_element');  // cache it to improve performance
$('#some_other_element').click(function() {
  $me('style','visibility:visible').hide();
  $me.slideDown(800);
});

有一天IE支持不需要这样的滑稽动作。在那之前,希望这会有所帮助。

答案 3 :(得分:0)

对于一些旧的jQuery数据表(例如,1.6.x)仍然没有完美的解决方案,似乎所有隐藏的列都将简要显示:使用表中的bVisibility:false属性,或设置列动态可见性。 fnSetColumnVis(1,false);

e.g。

jquery datatables hide column

是否有人知道这已在较新版本的数据表中得到解决?