zoukankan      html  css  js  c++  java
  • CSS两列布局

    一、float浮动

      两列布局可以使用浮动来完成,左列设置左浮动,右列设置右浮动,或者向同一个方向浮动。

      当元素使用了浮动之后,会对周围的元素造成影响,那么就需要清除浮动,通常使用两种方法:

    • 给受到影响的元素设置 clear:both,即清除元素两侧的浮动,也可以设置具体清除哪一侧的浮动:clear:left 或 clear:right,但必须清楚的知道到底是哪一侧需要清除浮动的影响。
    • 给浮动的父容器设置宽度,或者为 100%,同时设置 overflow:hidden,溢出隐藏也可以达到清除浮动的效果。

    1、宽度自适应的两列布局

    只需要将宽度按照百分比来设置,这样当浏览器窗口调整时,内容会根据窗口的大小,按照百分比来自动调节内容的大小。

    <style>
    .main-left{
        width:30%;
        height:800px;
        background:red;
        float:left;
    }
    .main-right{
        width:70%;
        height:800px;
        background:pink;
        float:right;
    }
    #footer{
        clear:both;      /*清除浮动,给受到影响的元素设置 clear*/
        height:50px;
        background:gray;
    }
    </style>
    <body>
    <div class="main-left">左列</div>
    <div class="main-right">右列</div>
    <div id="footer">页脚</div>
    </body>

    2、固定宽度两列布局

    只需要把左右两列包裹起来,也就是给他们增加一个父容器,然后固定父容器的宽度,父容器的宽度固定了,那么这两列就可以设置具体的像素宽度了,这样就实现了固定宽度的两列布局。

    <style>
    #main{          /*清除浮动:给浮动的父容器设置宽度,同时设置 overflow:hidden*/
        width:960px;
        margin:0 auto;
        overflow:hidden;        
    }
    #main .main-left{
        width:288px;
        height:800px;
        background:red;
        float:left;
    }
    #main .main-right{
        width:672px;
        height:800px;
        background:pink;
        float:right;
    }
    #footer{
        width:960px;
        height:50px;
        background:gray;
        margin:0 auto;
    }
    </style>
    <body>
    <div id="main">
        <div class="main-left">左列</div>
        <div class="main-right">右列</div>
    </div>
    <div id="footer">页脚</div>
    </body>

    3、两列居中自适应布局

    只需要给定父容器的宽度,然后让父容器水平居中。

    <style>
    #main{          /*清除浮动:给浮动的父容器设置宽度,同时设置 overflow:hidden*/
        width:80%;
        margin:0 auto;
        overflow:hidden;        
    }
    #main .main-left{
        width:20%;
        height:800px;
        background:red;
        float:left;
    }
    #main .main-right{
        width:80%;
        height:800px;
        background:pink;
        float:right;
    }
    #footer{
        width:80%;
        height:50px;
        background:gray;
        margin:0 auto;
    }
    </style>
    <body>
    <div id="main">
        <div class="main-left">左列</div>
        <div class="main-right">右列</div>
    </div>
    <div id="footer">页脚</div>
    </body>

    二、左边定宽,右边自适应

    <div class="content">
            <div class="left">
                <p>Hello</p>
                <p>I'am left</p>
            </div>
            <div class="right">
                <p>Hi</p>
                <p>I'am right</p>
            </div>
    </div>

    1、float+margin-left

    .left{
        background:#fcc;
        width: 200px;
        float: left;
    }
    .right{
        background: #f66;
        margin-left: 210px;
    }

    2、position:absolute+left+right

    .content{
        position: relative;
        width: 100%;
        height: 500px;
        border: 1px solid #000;
    }
    .left{
        background:#fcc;
        width: 200px;
        position: absolute;
    }
    .right{
        background: #f66;
        position: absolute;
        left: 210px;
    }

    结果为:

    但是右边的div并没有自适应,则需要加上下述代码来达到自适应的效果:就是同时设置left和right的值

    .right{
        right:0;
    }

    3、flex

    flex布局本来就是设计来自适应的,只需要用上flex: 1;,就能让.right分到.parent的宽度减去.left的宽度。

    .content{
        width: 100%;
        height: 500px;
        border: 1px solid #000;
        display:flex;
    }
    .left{
        background:#fcc;
        width: 200px;
        margin-right:10px;
    }
    .right{
        background: #f66;
        flex:1;
    }

    4、float+BFC

    这个方法主要是应用到BFC的一个特性:

    1. 浮动元素的块状兄弟元素会无视浮动元素的位置,尽量占满一整行,这样该兄弟元素就会被浮动元素覆盖。
    2. 若浮动元素的块状兄弟元素为BFC,则不会占满一整行,而是根据浮动元素的宽度,占据该行剩下的宽度,避免与浮动元素重叠。
    3. 浮动元素与其块状BFC兄弟元素之间的margin可以生效,这将继续减少兄弟元素的宽度。
    .content{
        width: 100%;
        height: 500px;
        border: 1px solid #000;
    }
    .left{
        background:#fcc;
        width: 200px;
        margin-right: 10px;
        float: left;
    }
    .right{
        background: #f66;
        overflow: hidden;    //通过设置overflow: hidden来触发BFC特性
    }

    并不是一定要在.right上用overflow: hidden;,只要能触发BFC就好了。

    由于.right的宽度是自动计算的,不需要设置任何与.left宽度相关的css,因此.left的宽度可以不固定(由内容盒子决定)。

    三、右边固定,左边自适应

    http://jo2.org/css-auto-adapt-width/

    http://www.111cn.net/cssdiv/css/67615.htm

    https://blog.csdn.net/weixin_34364979/article/details/79476865

  • 相关阅读:
    (补充)移除动态添加的控件
    (非技术)遇见讨饭者的思考
    datalist或datagrid的数据源是数组的时候怎么写绑定?
    (原创)一步一步学Remoting之二:激活模式
    一步一步学Remoting系列文章
    如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证(续)
    (原创)一步一步学Remoting之六:事件(2)
    (原创)一步一步学Remoting之五:异步操作
    【收藏】根据拼音首字母筛选人名
    (原创)一步一步学Remoting之四:承载方式(1)
  • 原文地址:https://www.cnblogs.com/lmjZone/p/8523618.html
Copyright © 2011-2022 走看看