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

预览具有固定宽度 (120x120),但跨度可能包含任何内容(图像、文本)。如何使用jQuery将其垂直水平居中?我查找了一些片段,但它们都是“主体”内的中心元素,而不是另一个元素。如果可能的话,我想避免为此使用“插件”。

非常感谢!

4

6 回答 6

14

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

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

文档: http: //jqueryui.com/demos/position/
获取:http: //jqueryui.com/download

于 2010-09-03T02:13:28.833 回答
4

既然你不介意使用 jQuery,你可以使用Center Element Plugin

就像这样做一样简单:

$(".preview").center();
于 2009-12-23T17:38:40.357 回答
3

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

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

  $(.center).css({'display' : 'block', '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);
于 2009-12-23T17:26:24.880 回答
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。

于 2009-12-23T22:26:14.647 回答
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的代码中获取概念

于 2012-11-27T18:23:43.787 回答
0

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

于 2015-02-11T06:08:31.153 回答