0

我有一个<ul>有点长的清单。当您展开(向下滑动)该列表元素时,浏览器不会向下滚动并且一切正常。当您收缩(向上滑动)该元素列表时,浏览器向上滚动时会闪烁/闪烁很多

  • 这不会发生在 MAC Firefox 上。
  • 在 Windows 上都没有(至少我可以测试的版本)
  • 这在 Firefox Linux (ubuntu) 上发生严重。

以前有人遇到过这个问题吗?如果是这样,我们能做些什么来解决它?

这是一个代码示例,以便更好地理解:

$('#btCatA').click(function() {
    $('#btCatA').toggleClass('selec');
    $('#listcatA').slideToggle('slow', function() {
        // ...
    });
});
4

1 回答 1

1

在向上滑动列表元素之前scrollTop,您可以通过将对象的属性减少该window元素的高度来防止这种情况。jQuery 有一个方法:. 您也可以对其进行动画处理,以使其看起来不那么仓促。以下(未经测试的)代码应该可以解决问题:.scrollTop()

var toggleClass = 'selec';

$('#btCatA').click(function() {
    var target = $(this),
        listElement = $('#listcatA');

    if (target.hasClass(toggleClass)) {
        target.removeClass(toggleClass);
        $(window).animate({
            scrollTop: '-='+listElement.height()+'px'
        }, 'slow', function () {
            listElement.slideUp('slow');
        });
    } else {
        target.addClass(toggleClass);
        listElement.slideDown('slow');
    }
});
于 2010-12-08T14:18:11.960 回答