元素内部的居中元素(jQuery)

时间:2009-12-23 17:15:26

标签: jquery css height center vertical-alignment

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

预览具有固定宽度(120x120),但跨度可能包含任何内容(图像,文本)。如何使用 jQuery 将其垂直水平居中?我查了一些片段,但它们都将“身体”内部的元素置于其他元素之内。如果可能的话,我想避免使用'插件'。

非常感谢!

6 个答案:

答案 0 :(得分:14)

最新的jQuery UI有一个位置组件:

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

Doc:http://jqueryui.com/demos/position/
获取:http://jqueryui.com/download

答案 1 :(得分:4)

由于您不介意使用jQuery,因此可以使用Center Element Plugin

这很简单:

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

答案 2 :(得分:3)

既然你提到你正在使用jquery,我假设你想通过javascript这样做。您可以使用Jquery为DOM中的元素添加样式。你可以使用

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);

答案 3 :(得分:2)

您可以使用仅限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。

答案 4 :(得分:1)

您可以将自己的函数添加到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();

Using jQuery to center a DIV on the screen

的代码中获取概念

答案 5 :(得分:0)

你可以使用CSS。
这篇文章提供了一个很好的解决方案 - http://mindthesemicolon.com/how-to-center-an-element-vertically-and-horizontally-using-css/
基本上是:
1。将孩子设置为绝对位置。
2。将父级设置为相对位置。
3。将孩子的左侧和上侧设置为50%。
4。平移(-50%, - 50%)以向左和向上移动子元素宽度的一半。