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