美文网首页
关于两栏布局

关于两栏布局

作者: 我向你奔 | 来源:发表于2018-03-23 12:43 被阅读16次

一、宽度与自适应

1、 浮动 float+ margin

左侧设置浮动,右侧设置margin-left(避免环绕左侧)的布局方法

    <style type="text/css">
        .left {
            width: 200px;
            float: left;
        }
        .right {
            margin-left: 210px;
        }
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

优点:容易理解,易于编写
缺点: 兼容性问题 ( IE6有3像素Bug: 当相邻的两个元素,一个是浮动的,另一个非浮动,那么在IE6 下面将会产生3像素bug。)

2、浮动 float+ margin+ (fix)

通过在html文件的right上套上一层right-fix (相当于left和right都在right-fix中), 然后对right-fix设置浮动可以解决IE6的兼容性问题, 然后提高left的层级设置定位属性为relative。

    <style type="text/css">
        .left {
            float: left;
            width: 100px;
            position: relative;
        }
        .right-fix {
            float: right;
            width: 100%;
            margin-left: -100px;
        }
        .right {
            margin-left: 120px;
        }
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right-fix">
            <div class="right">
                <p>right</p>
            </div>
        </div>
    </div>

优点:兼容性好
缺点:结构和样式更加复杂,不利于理解

3、浮动 float+BFC(overflow)

通过overflow触发BFC(BlockFormattingContext块格式化文本)模式,内容与外界隔离,不受浮动影响(不会环绕浮动元素)。

    <style type="text/css">
        .left {
            float: left;
            width: 100px;
            margin-right: 20px;
        }
        .right {
            overflow: hidden;
        }
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

优点:设置简单
缺点:兼容性问题(IE6不支持)

4、 table

table特点每列宽度之和一定是等于表宽度,所以设left,right自动填满剩下宽度。

    <style type="text/css">
        .parent {
            display: table;
            width: 100%;
        }
        .left,
        .right {
            display: table-cell;
            table-layout: fixed;
            // fixed:列宽由表格宽度和列宽度决定;优点1.加速table渲染;2.实现了布局优先
        }
        .left {
            width: 100px;
            padding-right: 20px;
        }        
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

缺点:代码较多

5、 flex

flex:1;// flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0,1,auto,后两个属性可选。
flex:1让所有弹性盒模型对象的子元素相同的长度,忽略它们内部的内容。

    <style type="text/css">
        .parent {
            display: flex;
        }
        .left {
            width: 100px;
            margin-right: 20px;
        }
        .right {
            flex: 1;
        }    
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

缺点:兼容性问题,性能问题(做一些小范围的布局)

6、position:absolute
    <style type="text/css">
        .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;
        }  
    </style>

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

二、不定宽与自适应

1、浮动float + BFC(overflow)
    <style type="text/css">
        .left {
            float: left;
            margin-right: 20px;
        }
        .right {
            overflow: hidden;
        }
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

IE6有兼容性问题

2、table
    <style type="text/css">
        .left {
            float: left;
            margin-right: 20px;
        }
        .right {
            overflow: hidden;
        }
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>
3、浮动 float+BFC(overflow)

可以实现不定宽自适应布局

    <style type="text/css">
        .left {
            float: left;
            margin-right: 20px;
        }
        .right {
            overflow: hidden;
        }
        .left p{
            width: 200px;
        } 
    </style>

    <div class="parent">
        <div class="left">
            <p>left</p>
        </div>
        <div class="right">
            <p>right</p>
        </div>
    </div>

相关文章

  • 关于两栏布局

    一、宽度与自适应 1、 浮动 float+ margin 左侧设置浮动,右侧设置margin-left(避免环绕左...

  • 布局

    单栏布局两栏布局三栏布局风景列表卡片

  • 用CSS实现布局(两栏布局,多栏布局)

    在网页上的布局比较经典的是两栏布局和三栏布局。下面简单总结自己对这两种布局的实现过程。 两栏布局 两栏布局是主内容...

  • CSS布局分类

    两栏布局 三栏布局 双飞翼布局 圣杯布局

  • Flex布局

    四栏布局 两栏布局 三栏布局 平均布局 flex布局 flex-direction:定义主轴方向 row: 元素摆...

  • CSS布局

    1. 单栏布局 inline-block Flex布局 2. 两栏布局 Float布局 Flex布局 3. 三栏布...

  • CSS Flex实现各种布局

    实现两栏布局 实现栅格布局 实现三栏布局 附录 双飞翼布局 圣杯布局

  • 我的布局实例

    下拉菜单 demo BFC 两栏布局 demo 负边距 两栏布局 demo 负边距 等边布局 demo 圣杯三栏布...

  • 小程序4——UI布局问题(持续更新)

    1、关于display:flex 多栏多列布局 小程序中推荐使用display:flex多栏布局,来简化页面布局 ...

  • CSS边用边学(一):一站式各种布局实践

    目录 布局相关属性displaypositionfloat 各种布局两栏布局三栏布局水平居中垂直居中 总结 概述 ...

网友评论

      本文标题:关于两栏布局

      本文链接:https://www.haomeiwen.com/subject/yolrfftx.html