Подтвердить что ты не робот

Центрирующий элемент внутри элемента (jQuery)

<div class="preview">
  <span class="center">This will be centered</div>
</div>

Предварительный просмотр имеет фиксированную ширину (120x120), но диапазон может содержать что угодно (изображение, текст). Как сосредоточить его по вертикали и по горизонтали с помощью jQuery? Я просмотрел некоторые фрагменты, но все они центрируют элементы внутри "тела", а не другие элементы. Я бы хотел избежать использования плагина для этого, если это возможно.

Большое спасибо!

4b9b3361

Ответ 1

Так как вы не против использования jQuery, вы можете использовать плагин Center Element

Это так же просто, как делать:

$(".preview").center();

Ответ 3

Поскольку вы упомянули, что используете jquery, я предполагаю, что вы хотели бы сделать это через javascript. Вы можете добавлять стили к элементам в DOM с помощью JQuery. Вы можете использовать

http://docs.jquery.com/CSS/css#properties

  $(.center).css({'display' : 'block', 'text-align' : 'center'});

В зависимости от элемента вы можете центрировать его без необходимости использовать text-align: center, если вы установите для этого поля значение

margin: 0 auto 0 auto

Это установит край сверху и снизу к нулю, а auto - влево и вправо, это можно использовать для центрирования элемента блока внутри другого элемента блока.

Чтобы центрировать элемент по вертикали в jquery, вы можете использовать этот

http://cool-javascripts.com/jquery/vertical-alignment-of-contents-inside-an-element-using-jquery.html

    function ($) {
    $.fn.vAlign = function(container) {
        return this.each(function(i){
    if(container == null) {
       container = 'div';
    }
    var paddingPx = 10; //change this value as you need (It is the extra height for the parent element)
    $(this).html("<" + container + ">" + $(this).html() + "</" + container + ">");
    var el = $(this).children(container + ":first");
    var elh = $(el).height(); //new element height
    var ph = $(this).height(); //parent height
    if(elh > ph) { //if new element height is larger apply this to parent
        $(this).height(elh + paddingPx);
        ph = elh + paddingPx;
    }
    var nh = (ph - elh) / 2; //new margin to apply
    $(el).css('margin-top', nh);
        });
     };
})(jQuery);

Ответ 4

Вы можете использовать только CSS-решение (игнорируя IE)

<div class="preview" style="display:table-cell;vertical-align:middle;text-align:center;margin:0 auto"> <span class="center">This will be centered</div> </div> использование display: block также будет работать, но только для горизонтального выравнивания, для вертикального выравнивания либо вам нужно будет эмулировать таблицу в соответствии с приведенным выше кодом, либо использовать JavaScript.

Ответ 5

Вы можете добавить свою собственную функцию в jquery:

// Centers on div
jQuery.fn.center = function (div) {
this.css("position", "absolute");

var position = div.position();
this.css("top", Math.max(0, ((div.height() - this.outerHeight()) / 2) + position.top) + "px");

this.css("left", Math.max(0, ((div.width() - this.outerWidth()) / 2) + position.left) + "px");
return this;
};

Использование:

$('#ajxload').center($('#mapWrapper')).show();

Взял концепцию из кода Используя jQuery для центрирования DIV на экране

Ответ 6

Вы можете сделать это с помощью CSS.
Этот пост обеспечивает хорошее решение - http://mindthesemicolon.com/how-to-center-an-element-vertically-and-horizontally-using-css/
В принципе:
1. Установите для ребенка положение абсолютное.
2. Установите родительский элемент в положение relative.
3. Установите дочерние элементы слева и сверху на 50%.
4. перевести (-50%, - 50%), чтобы сдвинуть влево и вверх на половину ширины дочернего элемента.