【问题标题】:positioning elements left and right of a div with margin:auto用 margin:auto 定位 div 的左右元素
【发布时间】:2026-02-15 03:10:01
【问题描述】:

我有一个以margin: auto; 为中心的设置宽度(以像素为单位)的 div。如何将元素定位到此 div 的左侧或右侧,其宽度会动态调整为中心 div 的边距有多宽?

感谢您的帮助!

编辑:更多信息...

基本上是这样的设置:

<div></div>
<div style="margin:auto; width: 950px">content goes here</div>
<div></div>

我想在中心 div 的左侧和右侧拥有相同的背景图片,但在中心 div 中使用不同的背景图片。那么如何将左右 div 与中心 div 的左右对齐,宽度覆盖中心 div 的整个边距。

【问题讨论】:

  • 如果一个元素动态调整到它的父元素的宽度,那么它肯定不需要左对齐或右对齐吗? - 因为它填满了整个父母?
  • 您能否显示您的代码以及详细提问,最好也发布您想要的结果的图片.....
  • 你能解释一下吗?左或右 div 在 margin:auto div 内?用你的代码发布..
  • 感谢您的 cmets。我编辑了问题并添加了更多信息。
  • 你希望“内容放在这里”的 div 始终保持在中心,宽度为 950px,左右 div 需要填充剩余...你需要吗?

标签: html css


【解决方案1】:

这应该也可以...我已经将宽度缩小(以适合 jsfiddle http://jsfiddle.net/Neograph734/Vb4Hm/1/)。如果你应该同时编辑左边距。

<div style="margin:auto; width: 250px; background: red;">    
  <div id="left_sidebar" style="float: left; width: 200px; margin-left: -200px;">
    <div id="right_sidebar" style="float: left; width: 200px; margin-left: 450px;">

    </div>
  </div>

Content here

</div>

更新: 内容应位于浮动 div 下方

【讨论】:

  • 好吧,问题是侧边栏应该填满整个边距,不管屏幕有多宽。再说一次,我可以将值设置为不合理的高数字 :) 这可能仍然比使用 JS 更好。
  • 好的,我会用这个,没有 js 和表格,它可能是最好的选择。我在这个问题上花了太多时间来继续寻找答案。谢谢!
【解决方案2】:

如果只是背景,你可以这样做:

<div style="background: url('path/to/image.jpg'); background-size: cover; position: absolute; left: 0; top: 0; right: 0; bottom: 0;">
  <div style="margin:auto; width: 950px">content goes here</div>
</div>

它将背景投影到背景 div 上。然后在内部 div 中,您可以指定另一个背景,该背景将覆盖父 div 的背景。

【讨论】:

  • 感谢您的回答。麻烦的是,中心的背景图像是具有透明度的 png,侧面的背景图像也是如此。如果我使用这个解决方案,两个背景图像会重叠。
  • 可以用其他方式完成,但我认为这会使事情变得不必要的复杂。你能删除一块背景div吗?就像从上到下添加一个白条?或将内部 div 的背景指定为 background: url('path/to/image') #ffffff;
  • 是的!我现在觉得很愚蠢,因为我没有想到这一点(背景颜色作为图像的次要颜色),非常感谢。让我试试看。
  • 啊,它工作得很好,但我也不能使用它。我刚刚注意到我的内容位于背景图片下方...
  • 你为什么要那样做....让我再写一个答案
【解决方案3】:

解决方案 1:

table可以轻松解决这个问题,就这样使用

<table width="100%">
   <tr>
       <td background="your/image/url5">content...</td>
       <td width="950" background="your/image/url">content goes here...</td>
       <td background="your/image/url5">content...</td>
  </tr>
</table>

您可以使用所有三个块来编写内容,也可以使用不同的内容

解决方案 2:

如果你需要div,那么你需要为此编写小jQuery

html:

<div class="left"></div>
<div class="center">content goes here...</div>
<div class="right"></div>

css:

<style>
.left{
    background:url(your/image);
    float:left;
}
.center{
    background:url(your/image);
    float:left;
    width:950px;
}
.right{
    background:url(your/image);
    float:left;
}
</style>

jQuery :

<script type="text/javascript">
    var window_width = $(window).width(); // get window width
    var total_remain = $(window).width()-950; // (-) your center div width
    var apply_width = total_remain / 2; // get remaining and divide by 2
    $(".left").css("width","apply_width"); // appying the width to the right / left
    $(".right").css("width","apply_width"); // appying the width to the right / left
</script>

【讨论】:

  • 感谢您花时间回答。但是,纯粹出于情感原因,我想避免将表格或 JS 用于此类事情。也就是说,这些都是有效的答案,可能会奏效。
  • 如果我能看到你的设计,我可以给出完美的答案...这个答案可能是一个假设...