嗨,我有一些这样的元素:
<div id="one">content</div>
<div id="two">content</div>
和相应数量的元素(没有任何父级,它们只是在body标签之后)具有:
position: absolute;
并且ID为:
id="helper-one" refers to id="one"
现在我想将第二组元素准确放在引用元素的中间(垂直和水平),我该怎么做?
我尝试过偏移:
var one_offset = $("#one").offset();
$("#helper-one").offset({ top: one_offset.top, right: one_offset.right, left:one_offset.left, bottom: one_offset.bottom})
但它只为顶部和左侧设置位置,将辅助器定位在元素的左上角而不是位于其中心
答案 0 :(得分:4)
jQuery.fn.center = function (obj) {
var loc = obj.offset();
this.css("top",(obj.outerHeight() - this.outerHeight()) / 2 + loc.top + 'px');
this.css("left",(obj.outerWidth() - this.outerWidth()) / 2 + loc.left+ 'px');
return this;
}
请致电$("#helper-one").center($("#one"));
ps:你甚至可以通过解析原始元素的id来跳过obj参数
jQuery.fn.center = function () {
var obj = $('#' + this.attr('id').split('-')[1]), loc = obj.offset();
this.css("top",(obj.outerHeight() - this.outerHeight()) / 2 + loc.top + 'px');
this.css("left",(obj.outerWidth() - this.outerWidth()) / 2 + loc.left+ 'px');
return this;
}
$(document).ready(function(){
$("#helper-one").center();
});