slideDown最后突然跳了起来

我在垂直列中构建了一个相当普通的菜单子菜单 – 嵌套的slideToggle ,使用slideToggle来展开和折叠子菜单。

我试图解决的问题是子菜单在最后“跳”开的方式。 (我正在测试最新版本的Chrome。)在第二个子菜单“好处”中,这可能是最值得注意的。 当菜单折叠时,它不会跳转,只有当它们正在扩展时才会跳转。

我认为问题可能与以下内容有关:after仅在菜单完全展开:after添加样式。 具体来说,一旦菜单完全展开,类current就会添加到LI标签中。 但是注释掉切换该类的代码似乎没有任何效果。

http://jsfiddle.net/mblase75/5gGum/

JS:

 $(document).ready(function() { $('#group-subnav > ul > li > a').on('click', function(e) { e.preventDefault(); var $li = $(this).closest('li'); $li.find('ul').slideToggle('', function() { $li.toggleClass('current') }).end().siblings().find('ul').slideUp('', function() { $li.siblings().removeClass('current') }).end(); }); });​ 

CSS相当可观,HTML也不起眼。

为要滑动的元素提供设置的宽度。

http://jsfiddle.net/5gGum/6/

  #group-subnav > ul > li > ul { display: none; background: #f4e693; padding: 2em 0; width: 159px; } 

这允许jQuery准确地计算结束高度。

作为参考,我从这里了解了这个小技巧: http : //www.bennadel.com/blog/2263-Use-jQuery-s-SlideDown-With-Fixed-Width-Elements-To-Prevent-Jumping.htm

我有同样的问题,但没有任何效果。 事实certificate将“transition”属性设置为导致我的问题:PI在滑动对象上将其设置为none,而slideDown现在可用作魅力:-)

对我来说问题是我有CSS填充。 删除了填充并将其转移到另一个html标记封装我的原始标记,一切正常。

我知道这是一个老问题,但也许我的解决方案可以帮助其他一些谷歌。

对我来说,问题是由填充和框大小调整引起的:边框。
我不需要特定的高度或宽度(尝试两者,最后将它们移除),盒子大小就行了。

 box-sizing:content-box; padding: 20px; 

这个剪辑为我的滚动框工作。 请注意,box-sizing:没有填充的border-box没有引起任何问题。

JQuery版本是1.7.1

我有这个问题。 我的问题是因为我正在将CSS中的display属性更改为’grid’。 幻灯片function将显示设置为阻止,因此存在冲突导致跳转解决方案。

我通过用另一个div包装子节点来显示为网格来解决这个问题。