<div class="preview">
<span class="center">This will be centered</div>
</div>
预览具有固定宽度 (120x120),但跨度可能包含任何内容(图像、文本)。如何使用jQuery将其垂直和水平居中?我查找了一些片段,但它们都是“主体”内的中心元素,而不是另一个元素。如果可能的话,我想避免为此使用“插件”。
非常感谢!
<div class="preview">
<span class="center">This will be centered</div>
</div>
预览具有固定宽度 (120x120),但跨度可能包含任何内容(图像、文本)。如何使用jQuery将其垂直和水平居中?我查找了一些片段,但它们都是“主体”内的中心元素,而不是另一个元素。如果可能的话,我想避免为此使用“插件”。
非常感谢!
最新的 jQuery UI 有一个位置组件:
$("#myDialog").position({
my: "center",
at: "center",
of: window
});
文档: http: //jqueryui.com/demos/position/
获取:http: //jqueryui.com/download
既然你提到你正在使用 jquery,我假设你想通过 javascript 来做到这一点。您可以使用 Jquery 向 DOM 中的元素添加样式。您可以使用
http://docs.jquery.com/CSS/css#properties
$(.center).css({'display' : 'block', 'text-align' : 'center'});
根据元素的不同,如果您将边距设置为
margin: 0 auto 0 auto
这会将顶部和底部的边距设置为零,左右设置为自动,这可用于将块元素置于另一个块元素内部的中心。
要在 jquery 中垂直居中元素,您可以使用它
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();
您可以使用 CSS 来实现。
这篇文章提供了一个很好的解决方案 - http://mindthesemicolon.com/how-to-center-an-element-vertically-and-horizo
ntally-using-css / 基本上:
1. 将孩子设置为绝对位置。
2. 将父级设置为相对位置。
3. 将孩子的左侧和顶部设置为 50%。
4. translate(-50%,-50%) 左移和上移子元素宽度的一半。