【问题标题】:How do you dynamically position one element on top of another?如何动态地将一个元素放在另一个元素之上?
【发布时间】:2011-03-14 00:36:58
【问题描述】:

我正在使用 jQuery 动态附加一些 html,并且我想将它直接插入到另一个元素的顶部。我该怎么做?

这是我的 application.js 文件中的代码:

$(document).ready(function() {
$('a.oembed').embedly({maxWidth:300,'method':'replace'}).bind('embedly-oembed', function(e, oembed){
      $("#video_div").append($("<img>", { src: oembed.thumbnail_url, width:200 }));
   });
});

图片是动态插入的,我希望它直接在上面:

<div id="video_div"><%= link_to 'video', @video.video_url, :class => 'oembed' %></div>

【问题讨论】:

  • 在顶部是什么意思?在它之前(在页面流中)还是在它之上?
  • @Justin 其他元素是如何定位的?
  • 另一个元素只是页面上的第一个元素,它还没有CSS

标签: javascript jquery append positioning


【解决方案1】:

这更像是一个 CSS 问题。您要确保父元素(#video_div)相对定位(位置:相对),插入元素(img)绝对定位(位置:绝对)

把它挂在左上角,确保它们大小相同,而且你是金色的。

#video_div {
  position: relative;
  width: 300px;
  height: 300px;
}

#video_div img {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 300px;
  height: 300px;
}

【讨论】:

    【解决方案2】:

    假设您的意思是在 z 顺序中直接位于它的顶部(隐藏它),JQuery 的 .position() 方法和绝对定位的组合应该可以解决问题。

    $('<div>New Element</div>').css({
        "position" : "absolute",
        "left"     : $foo.position().left,
        "top"      : $foo.position().top
    }).appendTo($container);
    

    注意:$container 必须同时包含动态生成的元素和目标元素。

    【讨论】:

    • 你能用我发布的 js 代码举个例子吗?
    • 我不知道.embedly() 是如何工作的,但我会发布一个带有标准JQuery 代码的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-03-12
    相关资源
    最近更新 更多