Jquery - горизонтально центрировать элемент по отношению к родительскому элементу

Я пытаюсь горизонтально центрировать динамический элемент для родителей уровня dom, которые имеют разную ширину.

У меня почти все есть, но я просто неправильно рассчитываю. Любая помощь будет принята с благодарностью.

ПРИМЕЧАНИЕ. Ширина элемента, который мне нужен по центру, составляет 20 пикселей.

Скрипт

$(function() {

$(".nav-menu").children("li").each(function() {

    $(this).on( "mouseenter", function(){   
    listWidth = $(this).find("a").width() /2 ; //<-- calculating width of each li
        $(this).find(".sub").prepend('<li id="nav-hover-state"></li>');
        $(this).find("#nav-hover-state").attr('style', 'margin-left:'+listWidth +'px');
    });

    $(this).on( "mouseleave", function(){   
        if($('.nav-container ul.nav-menu li .sub').attr('style','display:none')) {
        $(this).find("#nav-hover-state").remove();

    }
    });
}); 

person ryan    schedule 18.04.2014    source источник
comment
'маржа: 0 авто;' должен центрировать его внутри своего родителя из стороны в сторону.   -  person tmcc    schedule 18.04.2014
comment
К сожалению, из-за того, что я должен добавить элемент, я вынужден использовать абсолютное позиционирование. Извините, это не прямо под элементом, под которым я центрирую. Мне нужно изменить формулировку.   -  person ryan    schedule 18.04.2014
comment
Хорошо, работает ли добавление 10 к ширине списка? вы получаете половину родителя, но не учитываете внутренний элемент   -  person tmcc    schedule 18.04.2014
comment
Вы были на правильном пути! Я попытался добавить 10, но это только сдвинуло его вправо. Мне пришлось вычесть 10, чтобы сдвинуть его наполовину назад влево. Большое спасибо.   -  person ryan    schedule 18.04.2014


Ответы (1)


Вычтите половину размера вашего внутреннего элемента

listWidth = ($(this).find("a").width() /2) - 10 ; //<-- calculating width of each li
person tmcc    schedule 18.04.2014
comment
listWidth = ($(this).find(a).width() /2) -10; на самом деле сделал это для меня, так как я толкал слева, мне пришлось вычесть 10 Спасибо - person ryan; 18.04.2014
comment
Вы правы, я имел в виду вычитание. изменил мой ответ, чтобы соответствовать - person tmcc; 18.04.2014