jquery animate ul by list item

时间:2012-05-29 19:36:37

标签: javascript jquery css

我有一个ul,我希望根据用户点击的li垂直居中于另一个元素的垂直中心。我在这里编写了一些代码:

http://jsfiddle.net/XxmAT/1/

但遗憾的是,我的表现并不像我想要的那样,我知道我的数学已经完成了,所以任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:3)

我觉得这个更漂亮:

http://jsfiddle.net/XxmAT/33/


通常最好先考虑逻辑,然后再开始制作变量。由于变量集群,很难理解你对所有代码的意义。点击功能刚刚得到了很多,并且更容易理解我从哪个数字中减去,以获得所需的结果......

旁注:最后的- 180可能是奇怪的(和巨大的)边缘。

答案 1 :(得分:0)

你去吧。获得li的高度并将其乘以以计算li之间的空间高度,然后乘以所单击的索引。

http://jsfiddle.net/XxmAT/36/

        var u_menu = $("#menu-main-menu").position().top;
        var z_menu = $("#menu-main-menu").height();

        var y = $("#box1").offset().top;
        var z = $('#box1').height();


        var c_menu = (z_menu / 2) ;


        $("#menu-main-menu").css('top', - c_menu);


        $('ul#menu-main-menu li').click(function (e) {
        // this is the dom element clicked
        var index = $('li').index(this);


         var x = $('li').height() * 2;

         var offset_li = (u_menu + y) / index  ;

        $('ul#menu-main-menu').animate({top: -(x*index)}, "slow")


    });​