Вопрос

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

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

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

Это было полезно?

Решение

Поскольку вы не против использования jQuery, вы можете использовать Плагин центрального элемента

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

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

Другие советы

Последний пользовательский интерфейс jQuery имеет компонент позиции:

$("#myDialog").position({
   my: "center",
   at: "center",
   of: window
});

Док: http://jqueryui.com/demos/position/
Получать: http://jqueryui.com/download

Поскольку вы упомянули, что используете 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

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

Чтобы центрировать элемент по вертикали в 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);

Вы можете использовать только решение 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.

Вы можете добавить свою собственную функцию в 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 на экране

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top