JQuery在另一个中间设置了一个元素

时间:2012-01-29 21:48:37

标签: javascript jquery css position positioning

嗨,我有一些这样的元素:

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

但它只为顶部和左侧设置位置,将辅助器定位在元素的左上角而不是位于其中心

1 个答案:

答案 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();       
});