在 IE7 / 8、FF 和 Chrome 上都会出现此问题。
有什么想法可以解决这个问题吗?
提前感谢。
我已经找到了一个解决方法,但我仍然不确定细节。似乎当jQuery添加'overflow: hidden'样式时,附近的浮动元素的效果发生了改变。解决方法是在slideToggle的div上放置一个永久的'overflow: hidden',并且还有一个负的margin-left来抵消这个影响。
我很惊讶改变overflow值会对布局产生如此大的影响,但事实就是这样...
通过添加到切换的div中解决:
overflow: hidden; position: relative;
设置您想要滑动的组件的高度/宽度可以修复使用类似于以下行的代码时导致的“跳跃”错误(参考链接):
$('#slider').css('height', $('#slider').height() + 'px');
您的文档中是否包含任何DOCTYPE声明?如果没有,一些浏览器将以“quirck”模式呈现页面,这并不总是会得到您期望的结果。
请参见此处
为确保您的页面按预期呈现,请在页面顶部(即html标记之前)添加以下声明。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<div>
的情况下才会出现。我尝试了这个页面上的所有方法,但唯一有效的方法是使用 overflow:hidden;
。overflow:hidden;
的问题在于,段落元素创建的上部和下部的空间突然消失,从而使布局变得丑陋。<div>
更改为 <p>
并删除了 overflow:hidden;
... 它可以正常工作,不会破坏布局,并且跳跃问题也不会再次发生。<div>
,并发现了一些关于这个问题的东西...div
包含 p
或 ul
或类似的内容时,就会出现跳跃的问题。div
只包含文本、a
链接和/或图片时,没有跳跃动画。div
中删除所有元素的边距和内边距可以解决此问题。其他像换行一样的东西可以添加来弥补缺少内边距和边距的影响...虽然不是很理想,但动画又变得平滑了。<p>
和<ul>
已经有了0的上边距。如果div
包含多个段落,所以在div
中间有底部边距会发生什么呢?感谢您的报告。 - Sparky我遇到了与 .slideToggle
相同的问题,而BenAdler是正确的。把你想要切换的所有内容放在一个div中,并将该div的样式设置为包含overflow:hidden
和position:relative
的内容。之后它就会正常工作。
在使用slideToggle时,添加CSS3的过渡/变换属性通常可以解决任何跳跃问题...例如:
-webkit-transform-origin: top;
-moz-transform-origin: top;
-ms-transform-origin: top;
-o-transform-origin: top;
transform-origin: top;
-webkit-transition: transform 0.26s ease;
-moz-transition: transform 0.26s ease;
-ms-transition: transform 0.26s ease;
-o-transition: transform 0.26s ease;
transition: transform 0.26s ease;
transition: -webkit-transform 0.26s ease;
我遇到了同样的错误,通过使用以下代码定位元素解决了问题:
position: relative; width: 709px;
固定宽度解决了问题。
我想分享一个对我有效的解决方案。
我正在为一个站点使用响应式布局,基本上在我的布局中使用slidetoggle在其中一个列上,唯一有效的解决方案是为我的内容设置固定宽度 - 但是由于列宽是动态的,这对我来说不是解决方案。
将我想要切换的内容包装在一个额外的<div>
中,然后在新的div
上使用滑动切换似乎就可以解决问题。尝试将position:relative
添加到您尝试滑动切换的原始元素中。
是的,这确实增加了可怕的不必要的标记,但这是我能让它起作用的唯一方法。