【问题标题】:3 column fluid layout css3列流体布局css
【发布时间】:2011-07-11 13:41:17
【问题描述】:

好的,我正在尝试制作 3 列布局,但我希望所有列都具有 33% 的宽度和 50% 的高度。我还想在列的 3 个 div 上填充。但是每次我添加填充时,它都会使最后一个 div 转到下一行。

我该如何解决这个问题??

html

<div id="nav">
    <div class="block" id="left">
        <h1>blah blah</h1>
    </div>
    <div class="block" id="middle">
        <h1>blah blah</h1>
    </div>
    <div class="block" id="right">
        <h1>blah blah</h1>
    </div>
</div>

css

#nav {
    ??
}
.block {
    padding:20px;
    width:33%;
    height:50%;
    position:relative;
    float:left;
}

【问题讨论】:

    标签: html css fluid-layout


    【解决方案1】:

    不幸的是,它不会按照你想要的方式使用 DOM 结构。 W3 盒子模型在计算的宽度中包含填充和边框,因此它为每个 div 增加了 40px,这使其 120px 太宽了。

    您想要做的是将这三个 div 视为包装器,然后将 div 嵌套在其中,然后您可以分配一个边距来替换填充。

    例子:

    <div id="nav">
        <div class="block" id="left">
            <div>
                <h1>blah blah</h1>
            </div>
        </div>
        <div class="block" id="middle">
            <div>
                <h1>blah blah</h1>
            </div>
        </div>
        <div class="block" id="right">
            <div>
                <h1>blah blah</h1>
            </div>
        </div>
    </div>
    

    CSS:

    .block {
        width:33%;
        height:50%;
        position:relative;
        float:left;
        background-color:#CCC;
    }
    
    .block>div {
        margin:20px;
    }
    

    工作演示:http://jsfiddle.net/AlienWebguy/Yf34X/

    【讨论】:

    • 所以它所做的只是 .block div 的宽度为 33%,然后其中的 div 有 20 个边距。但是为什么 .block 必须向左浮动并相对定位?浮动和位置总是让我感到困惑,哈哈
    • 它们不必相对定位。我只是把它留在那里,因为它在你原来的 CSS 中。不过,它们确实必须向左浮动,以便它们并排显示。将浮动视为将节点从正常流中取出。位置是您希望节点出现在屏幕上的位置的覆盖。 position:relative 表示如果你给它一个left:20px;,它将在它通常出现的位置的左边20px。 position:absolute; 会将其放在第一个具有非静态位置的父对象的 0 坐标左侧 20px 处。这本身就是一个讨论;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2012-02-27
    • 2012-06-09
    相关资源
    最近更新 更多