两列定宽布局

  两列定宽布局方式的一个前提就是两列的盒模型宽度相加不能大于父元素的宽度,否则你懂得......错位了。

测试html页:

<body>
    <div id="header"> 头部 </div>
    <div id="container">
        <div class="mainBox"> 主要内容区域 </div>
        <div class="sideBox"> 侧边栏 </div>
    </div>
    <div id="footer"> 底部信息 </div>
</body>

相关样式:

 * {
        margin: 0;
        padding: 0;
    }

    #header, #footer {
        width: 960px;
        height: 30px;
        border: 1px solid red;
    }

    #container {
        width: 960px;
        height: 250px;
        margin: 10px 0;
    }

    .mainBox {
        float: left;
        width: 680px;
        height: 250px;
        color: #FFFFFF;
        background-color: #333333;
    }

    .sideBox {
        float: right;
        width: 270px;
        height: 250px;
        color: #FFFFFF;
        background-color: #999999;
    }

  我们可以发现,两列定宽的实现,只是将两部分一部分进行左浮动,一部分进行右浮动即可。以上的代码我们可以发现一个问题,如果在mainBox或者是sideBox中添加的内容超出了给元素所定的高度的时候,内容就会溢出,此时我的解决办法就是将他设置成为高度自适应的样式,然后为footer清除浮动。就是下面的样式:

    * {
        margin: 0;
        padding: 0;
    }

    #header, #footer {
        width: 960px;
        height: 30px;
        border: 1px solid red;
    }

    #container {
        width: 960px;
        /*height: 250px;*/
        margin: 10px 0;
    }

    .mainBox {
        float: left;
        width: 680px;
        /*height: 250px;*/
        color: #FFFFFF;
        background-color: #333333;
    }

    .sideBox {
        float: right;
        width: 270px;
        /*height: 250px;*/
        color: #FFFFFF;
        background-color: #999999;
    }

    /*这种清除浮动的方式,会使container和footer之间的margin消失*/
    #footer {
        clear: both;
    }

  这样的话,就变为了高度自适应的版本,高度会因为他内容的填充而改变。上面的注释中也写到了,在 footer 上添加清除浮动的话,会使 container 和 footer 之间的间隔消失,所以就有了以下的改良办法:

    /*#footer {
        clear: both;
    }
    */
    #container::after {
        display: block;
        visibility: hidden;
        font-size: 0;
        line-height: 0;
        clear: both;
        content: "";
    }

  我的理解就是, 创建了一个 after 伪元素, display 标识为盒子,不可见,填充内容为空,在这个伪元素上添加清除浮动。    

  css 小白,刚开始学习 css ,所以不对的请指出...虽然不太会有人看

时间: 2024-11-07 14:46:37

两列定宽布局的相关文章

两列定宽布局-(来自网易)

<div class="g-bd f-cb"> <div class="g-mn"> <p>左侧定宽</p> </div> <div class="g-sd"> <p>右侧定宽</p> </div> </div> <style> /* 两列定宽布局 */ .g-bd{width:950px;margin:0 auto

两列布局(一列定宽,一列自适应)

用table+table-cell实现两列布局(一列定宽,一列自适应,且table是自动的两列自动登高) 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style type="text/css"> 7 .pare

两列布局,一列定宽,一列宽度自适应

方法一: body{ margin: 0;}.container{ height: 300px; overflow: hidden;}.left{ width: 200px; height: 300px; background: red; position: absolute; left:0; top: 0;}.right{ margin-left:200px; width: 100%; height: 300px; background: green;} <div class="cont

多列布局之一列、多列定宽及一列自适应布局

命题: <div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div> </div> 问题一:一列定宽及一列自适应 方案1: .left{ flo

两列右侧自适应布局

<div class="g-bd1 f-cb"> <div class="g-sd1"> <p>左侧定宽</p> </div> <div class="g-mn1"> <div class="g-mn1c"> <p>右侧自适应</p> </div> </div> </div> /* 两

两列左侧自适应布局

<div class="g-bd2 f-cb"> <div class="g-mn2"> <div class="g-mn2c"> <p>左侧自适应</p> </div> </div> <div class="g-sd2"> <p>右侧定宽</p> </div> </div> /* 两

任意列+左右两列等高布局,并要求有最小高度

高度相等列在Web页面设计中永远是一个网页设计师的需求.如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了.但是,如果一个或多个列需要单独设置自己的背景色,那么它的视觉完整性的设计就显得非常重要了.大家都知道当初Table实现等高列布局是多么的简单,但是我们使用CSS来创建等高列布局并非是那么容易的事情. 如果一个设计是固定宽度(非流体的宽度设计),那么实现多列等高效果是相当的容易.最好的技术就是使用Dan Cederholm的Faux

布局-两列布局(一列定宽,一列自适应)

结构: 1 <div class="parent"> 2 <div class="left"> 3 <p>left</p> 4 </div> 5 <div class="right"> 6 <p>right</p> 7 <p>right</p> 8 </div> 9 </div> 样式: 1.解决方案一:

前端试题-两列等高布局

我们经常会见到一些小微网站上,左边是导航,右边是内容,无论是左边导航高度高还是右边内容高度高,两边始终以最高的来自适应等高显示. 这里的布局主要是把两边元素同时设两个比较大的padding-bottom,然后设置相等值的负的margin-bottom,最后给父元素加一个overflow:hidden. 比如上图有两列,一列高一列低,这里我们假设给左右都加上黄色部分高度padding-bottom:500px,如果不做其他处理的话,左边仍然没有右边高,分别加上不同背景色,左边和右边还是有差值,左边