slideToggle高度是“跳跃”

我的jQuery slideToggle()实验

任何人都可以告诉我为什么我打开它时我的盒子“跳”? 上半场他们滑了,其余的他们“跳”?

谢谢,约翰内斯

这是一个简单的修复。 将此CSS规则添加到样式表中( 在Firebug中测试可以工作,根据我以前对此问题的经验,这是修复 ):

 ol.message_list { position: relative } 

这是一个CSS bug,而不是jQuery bug本身。

对我有帮助的是

 overflow: hidden 

那个切换……

您案件中最快的解决方案:

 .message_container { width: 361px; } 

我不确定为什么,但是当包含

导致问题时,不给容器一个固定的宽度,给它一个,跳跃就会消失。

css padding和jquery slideToggle不能很好地协同工作。 尝试填充填充。

我在很多场合都发现了这个问题,我用slideToggle而不是边距/填充来设置高度。

所以,这样的事情可能会解决它:

 $("#thediv").slideToggle().animate({"margin-bottom": "toggle"}); 

如果设置, min-height属性也可以触发这样的故障。 在这种情况下,您需要重置它:

 .toggle-container { position: relative; min-height: 0; } 

无论如何,我认为最容易使用的解决方案是将自定义函数添加到jQuery,并使用动画填充/ margin-top / bottom。

 //this function is to avoid slideToggle jQuery jump bug. $.fn.slideShow = function(time,easing) { return $(this).animate({height:'show','margin-top':'show','margin-bottom':'show','padding-top':'show','padding-bottom':'show',opacity:1},time,easing); } $.fn.slideHide = function(time,easing) {return $(this).animate({height:'hide','margin-top':'hide','margin-bottom':'hide','padding-top':'hide','padding-bottom':'hide',opacity:0},time,easing); } 

和用例:

 $(this).slideShow(320,'easeOutQuart'); $(this).slideHide(320,'easeOutQuart'); 

我的示例动画不透明度切换tu,您可以根据需要进行修改。

我发现最简单的修复方法通常是从滑动元素中删除填充,并向滑动元素的元素添加填充。

在此示例中,具有data-role="content"属性的div是滑动的div,并且填充应用于tab-example__content

 
...

为了修复’生涩’的滑动,我在滑动元素中添加了一个新的div,并将类/ padding移动到那个,就像这样:

 
...

它现在很好,很顺利

我发现了另一件影响它的事情。 从该元素的CSS中删除min-height为我修复了它。

如果切换的框默认没有高度,则需要添加它,对于自动高度添加:

 .toggle-container { height: auto; } 

我发现在切换容器上设置宽度解决了我的问题

 .toggle-container { width: 100%; } } 

我看过slideToggle依赖于起始宽度和高度来正常运行,因此根据您的页面,您可能需要设置宽度或高度以获得您期望的行为。

在我过去的情况下,我遇到了同样的问题,问题是我有transition: all 350ms; 我的CSS中的声明与.slideToggle冲突。 删除它为我修复它,所以在CSS中查找转换。