JQuery 将一个元素设置在另一个元素的中间

发布于 2024-12-29 19:43:40 字数 603 浏览 1 评论 0原文

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

<div id="one">content</div>
<div id="two">content</div>

和相应数量的元素(没有任何父元素,它们就在 body 标签之后),它们具有:

position: absolute;

并且具有这样的 id:

id="helper-one" refers to id="one"

现在我想将第二组元素恰好放置在引用元素的中间(垂直和水平),我该怎么做?

我尝试过使用 offset:

    var one_offset = $("#one").offset();

    $("#helper-one").offset({ top: one_offset.top, right: one_offset.right, left:one_offset.left, bottom: one_offset.bottom})

但它仅设置顶部和左侧的位置,将助手定位在元素的左上角而不是其中心

Hi I have some elements like these:

<div id="one">content</div>
<div id="two">content</div>

and a corrispondent number of elements (without any parent, they are just after the body tag) that have:

position: absolute;

and with an id like that:

id="helper-one" refers to id="one"

Now i want to place the second group of elements exactly at the middle (vertical and horizontal) of referred elements, how can i do that?

I've tried with offset:

    var one_offset = $("#one").offset();

    $("#helper-one").offset({ top: one_offset.top, right: one_offset.right, left:one_offset.left, bottom: one_offset.bottom})

but it set position only for top and left positionating the helper at the top-left corner of the element and not at its center

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朱染 2025-01-05 19:43:40
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();       
});
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;
}

Call as $("#helper-one").center($("#one"));

ps: you may even skip obj argument by parsing the id of the original element

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();       
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文