我有一个ul,我希望根据用户点击的li垂直居中于另一个元素的垂直中心。我在这里编写了一些代码:
但遗憾的是,我的表现并不像我想要的那样,我知道我的数学已经完成了,所以任何帮助都会非常感激!
答案 0 :(得分:3)
我觉得这个更漂亮:
通常最好先考虑逻辑,然后再开始制作变量。由于变量集群,很难理解你对所有代码的意义。点击功能刚刚得到了很多,并且更容易理解我从哪个数字中减去,以获得所需的结果......
旁注:最后的- 180
可能是奇怪的(和巨大的)边缘。
答案 1 :(得分:0)
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")
});