【问题标题】:Aligning Absolute positioned elements next to each other对齐彼此相邻的绝对定位元素
【发布时间】:2013-02-28 14:01:07
【问题描述】:

全部,

我想将绝对定位的元素彼此相邻对齐。我确定我已经在自己的代码中看到了这种效果,但是我正在努力在我当前的项目中重现这种效果。

这是布局草图:

绝对定位的元素(大约 100 个 div)从左到右对齐,当它们用完空间时,它们会落入下一行。所有这些听起来都像是浮动的工作,但是,由于对定位的细微调整,我必须使用绝对位置。

我的问题是如何在父 div 中自动对齐绝对定位的 div。

【问题讨论】:

  • 是的,当然,绝对位置是必需的,因为 div 实际上从(例如)顶部开始:-50px;左:-50 像素。 IE。说布局开始在可视区域之外渲染,这是为了给人一种“更大的图片”的错觉而故意的效果
  • 如果是这种情况,请在子 div 中使用浮点数,并改为将父容器 div 设为 top: -50px。
  • 感谢 Samuel,想到了这一点,但 div 从四面八方延伸,即从左、右、上、下。花车不会让我这样做。使用绝对位置和js,我可以控制一行应该延伸多远

标签: javascript css css-float css-position


【解决方案1】:

当空间不足时,它们会落入下一行

这对绝对定位的元素不起作用,因为它们是绝对定位的。

这听起来像是 jQuery masonry 插件的工作。

更新:

是的,当然,绝对位置是必需的,因为 div 实际上从(例如)顶部开始:-50px;左:-50 像素。 IE。说布局开始在可视区域之外渲染,这是故意的效果,以便给人一种“更大的图片”的错觉 - Kayote

如果是这种情况,请在子 div 中使用浮动,并将父容器 div 设为顶部:-50px。

更新:

但是 div 从四面八方延伸,即从左、右、上、下。花车不会让我这样做。使用绝对位置和 js,我可以控制一行应该延伸多远 - Kayote

那么您的 CSS 没有正确完成。有一些方法可以达到这种效果。请在 jsfiddle.com 上复制您的代码,或链接到它。

【讨论】:

  • 我宁愿不使用任何插件,因为我认为它的工作量不大......它只是一个我不清楚的绝对定位的概念:)
  • 刚刚在上面的问题中添加了一张图片,希望对您有所帮助
  • 所有 div 的宽度和高度都相同。如果你能用花车实现,我很想知道如何:)
  • 没有太多代码可以重现... jsfiddle.net/zYdUz/2 这是 jhunlio 的示例,稍作修改。问题仍然是如何对齐绝对定位的元素。
【解决方案2】:

HTML:

<div class="parentContainer">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
</div>

CSS:

.parentContainer {
    width: 200px;
}

.child {
    float: left;
width: 40px;
height: 40px;
margin: 5px;
position: relative;
}

希望这行得通。

这是http://bittu.github.com/hidden-tiles/的示例

如果您想让child 元素超出可视屏幕,则不要指定parentContainer 的宽度

.parentContainer {
    width: auto;
}

【讨论】:

  • 感谢 Sandeep,我喜欢相对负位置的想法,但浮动是限制性的,因为它们不允许我超出可视区域
  • +1 个绝对定位的块不知道,例如,它们何时到达第一行的末尾,因为它们是完全 从流程中删除。一个特定的街区有邻居吗?他不知道,他独立于他人
  • @FelipeAls 这就是 js 的用武之地,我不关心何时开始新行,我需要知道绝对定位如何相对于彼此为兄弟的元素起作用
【解决方案3】:

html

<div class="wrap">
  <div class="inner"></div>
  <div class="inner"></div>
  <div class="inner"></div>
  <div class="inner noPaddingRight "></div>

  <div class="inner"></div>
  <div class="inner"></div>
  <div class="inner"></div>
  <div class="inner noPaddingRight "></div>

</div>

css

    .wrap {
float:left;
position:absolute;
    width:100%;
}

.inner {
float:left;
margin:0 0 5px 1%;
    width:23%;
    border:1px solid red;
    height:100px;
}

.noMarginRight {margin-right:0 !important}

【讨论】:

  • 通过阅读您的代码,'wrap' 绝对位置将覆盖 float left 属性。内包裹,您正在浮动内部孩子。请参阅我上面的问题以获取说明,在您的示例中,div 不会根据我的要求向右伸展。
  • 感谢 jhunlio 的努力,这是我的更新:jsfiddle.net/zYdUz/2 注意,div 不会超出正确的可视区域,这是我想要的 :)
  • 嗨,如果你能给出 div 的确切位置和它的样子.. 因为我对你想要实现的目标感到很困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
相关资源
最近更新 更多