jquery - 如何通过切换使其更平滑 ('slow' )

标签 jquery toggle

我有以下代码,它可以工作,但在每个切换操作结束时变得有点跳动。

切换段落会不会更流畅?我正在尝试获取该段落,但我不知道该怎么做。

<head>

<style type="text/css">
body {width: 660px; margin: 0 auto; }
.toppara{
background-color: #FF9; 
}
.morepara {
background-color: #fff; 
display:none;
}

.togglebutn {
color: #900;
background-color: #FFF; 
}

</style>

</head>

<body>

<div id="section1">
<div class="toppara"><p>Content 1.</p> 

</div>

<div class="morepara">
<p>
Content 2. 
</p>

</div>

<p class="togglebutn">
<a>Show/Hide</a>
</p>
</div><!-- section 1 -->

<!-- section 2 -->
<div id="section2">
<div class="toppara"><p>Content 3.</p> 
</div>


<div class="morepara">
<p>
Content 4.
</p>


</div>

<p class="togglebutn">
<a>Show/Hide</a>
</p>
</div><!-- section 2 -->

<script language="javascript" type="text/javascript">
$(function() {
    $('.togglebutn a').click(               
        function(){ 
        var $parentpara = $(this).parent().prev();
        
        $parentpara.toggle('slow');
    });

});


</script>

最佳答案

为了向下滑动工作,JQuery 必须猜测元素的最终高度。当出现此错误时,您会在动画结束时看到跳跃,并且允许元素找到其自然高度。

您的问题是由 p 标记上的边距引起的,该边距占用了 JQuery 的原始估计空间,但在动画完成时会折叠起来。

解决方案是删除 p 标签上的边距,通过为 .morepara div 提供明确的高度、边框或一些顶部/底部填充来尝试防止折叠发生,尽管这两种选择都有不良副作用。

关于jquery - 如何通过切换使其更平滑 ('slow' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990622/

相关文章:

javascript - 隐藏与删除 DOM 元素

javascript - 嵌套 div 上的 jQuery click()

javascript - AJAX:将值数组发布到 php

javascript - 删除选择列表中的向下箭头

javascript - Jquery 在 View 之间切换

javascript - 如何使用引导切换来调用函数?

jquery - IE——溢出元素滚动到底部

jQuery - 在切换()中启用/禁用选择框;

javascript - 专注于隐藏元素(取消隐藏后)并使用切换时的 jQuery 问题

jquery - 创建左/右过渡效果