jQuery自动设置高度动画

jQuery自动设置高度动画,jquery,height,html-lists,expand,Jquery,Height,Html Lists,Expand,我有一个高度为125px的ul。当用户将鼠标悬停在ul上时,我希望将高度设置为自动高度。当用户离开ul时,ul将再次转换为125px $('.box .box-overflow ul').hover(function() { $(this).animate({ height: '100%' }, 400); }, function() { $(this).animate({ heigh

我有一个高度为125px的ul。当用户将鼠标悬停在ul上时,我希望将高度设置为自动高度。当用户离开ul时,ul将再次转换为125px

    $('.box .box-overflow ul').hover(function() {
        $(this).animate({
            height: '100%'
        }, 400);
    }, function() {
        $(this).animate({
            height: '125px'
        }, 400);
    });
这是可行的,但当用户进入ul时,它会扩展,但没有很好的动画效果


有人能帮我吗?:)

在悬停时尝试以下操作:

var height = $(this).css('height','auto').height();  // get real height
$(this).css('height','125px'); // return current state;
$(this).animate({height: height+'px'}, 400);
用户不应看到前两行中的活动,但您可以获得UL的真实高度。只有知道最终高度,才能产生奇特的滑动效果


工作示例如下:

您可以使用scrollHeight执行此操作

$('ul').hover(function(){
  $(this).animate({
    height: $(this)[0].scrollHeight+'px'
  }, 400);
}, function(){
  $(this).animate({
    height: '125px'
  }, 400);
});

我在别处发布了这篇文章,但我觉得它在这里也很有用:我制作了一个处理这个问题的小插件——应该是相当简单的,基于达西·克拉克(Darcy Clarke)已经发表的方法,并进行了一些(imo)非常必要的改进。只需对jQuery进行即插即用:


检查函数上的
easing
参数“动画效果不好”是什么?@ggzone就像用CSS悬停一样。。。没有动画。就在那里,他扩张了。