【问题标题】:How to center fixed-position, dynamic-width divs [diagram included]?如何居中固定位置、动态宽度的 div [包括图表]?
【发布时间】:2011-08-31 11:12:47
【问题描述】:

我有一个固定宽度、相对定位且居中的#content div(如下图红色外框所示)。在这个div的顶部,我需要放置两个固定位置的header div,一个居中,一个居右(中心线显示为红色虚线)。

这两个标题 div 具有动态宽度,需要锚定在朝向中心的一侧(以黑色粗体显示)。当它们变大时,它们的外边缘应向周边延伸(用黑色箭头显示)。

我以为我可以通过这样的方式达到效果,但没有运气:

#leftheader { position:fixed; top:0; left:50%; margin-right:10px; }
#rightheader { position:fixed; top:0; right:50%; margin-left:10px; }

图表:

非常感谢所有帮助。谢谢!

【问题讨论】:

    标签: css centering css-position


    【解决方案1】:

    这是我想出的a solution。它使用 4 个容器来完成你想要的。只需删除 leftHoldrightHold 的背景颜色

    HTML

    <div id="leftHold">
        <div id="leftHeader">TEST1234</div>
    </div>
    <div id="rightHold">
        <div id="rightHeader">TEST</div>
    </div>
    

    CSS

    body{padding:0px;}
    
    #leftHold{width:50%; float:left; height:40px;background:#ccc;}  
    #leftHeader{ float:right; margin-right:10px; background:#ffc;}
    
    #rightHold{width:50%; float:right; height:40px;background:#ddd;}
    #rightHeader{ float:left; margin-left:10px; background:#ffc;}
    

    【讨论】:

    • 对于这种左/右浮动方案,我可以建议将右浮动换成左,即:右浮动div应该放在代码中,我相信它在大多数情况下比“正常”的左/右代码顺序。
    • 由于方便的 jsfiddle 链接,我首先尝试了此解决方案。它就像一个魅力。谢谢!
    【解决方案2】:

    我会这样做:(正如你所说,容器有一个固定的宽度,比如说 800px)

    将左侧 div 与右侧放在容器的中心;

    将右侧 div 与左侧放在容器的中心;

    两个 div 都应该有一个max-width。 (对于这个例子,我删除了边距,只是为了让你明白我的意思)。

    所以:

    #leftheader {
       position: absolute;
       top:0;
       right:400px;
       max-width: 400px;
     }
    
    #rightheader {
       position: absolute;
       top:0;
       left:400px;
       max-width: 400px;
     }
    

    【讨论】:

    • 这在调整普通文档大小时不起作用,但如果容器是固定宽度的,我想这是可行的。
    • 我实际上是根据我认为的错误对其进行了否决(使用您的代码调整标准文档的大小会导致奇怪的结果 - jsfiddle.net/267up)......但就像我说的那样,如果它是固定宽度,它会起作用的。我无法取消我的投票,所以我将其更改为赞成投票,即使我发现我的解决方案更普遍 [耸耸肩]。
    • @Dutchie432 OP 说容器有一个固定的宽度,另外,我建议的 max-width 只是一个故障安全,因为容器可能有隐藏的溢出。
    • ...正确 - 就像我说的...否决票是“基于我认为的错误”
    • 我最终使用了 Dutchie432 的解决方案,但这看起来也不错。但是,位置不是需要“固定”而不是“绝对”来实现固定的行为吗?
    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 2012-05-13
    • 1970-01-01
    • 2014-03-15
    • 2017-05-26
    • 2011-03-10
    • 2011-01-21
    相关资源
    最近更新 更多