CSS常见布局

这里所说的常见布局是指利用float,position,margin,padding等属性来进行的布局,不包括flex布局和grid布局。

单列布局

没什么好说的

<!-- html -->
<div class="body">
    <div class="header"></div>
    <div class="container"></div>
    <div class="footer"></div>
</div>

<! -- css -->
.body{
    max-width: 1200px;
    margin: 0 auto;
}

左右布局

<!-- html -->
<div class="body">
    <div class="left"></div>
    <div class="right"></div>
</div>

float + overflow

将左框设置为float: left,右框设置overflow: hidden

<!-- html -->
<div class="body">
        <div class="left">111</div>
        <div class="right">222</div>
</div>

<! -- css -->
.left{
    float: left;
    width: 200px;
    margin-right: 10px;
}
.right{    
    overflow: hidden;
}

float + margin

将左框脱离文档流,设置右框的margin-left为左框的宽度

<!-- css -->
.body{
    max-width: 1200px;
    margin: 0 auto;
}

.left{
    width: 200px;
    float: left;
}

.right{
    margin-left: 200px;
}

position + margin

原理和使用float类似,只是将左框用position: absolute固定,右框设margin-left

/* css */
.body{
    max-width: 1200px;
    margin: 0 auto;
}

.left{
    position: absolute;
    top: 0;
    left: 0;
    width: 200px;
}

.right{
    margin-left: 200px;
}

左中右布局

左中两列定宽,右列自适应

左中两栏设置float: left、width、margin-right,再设置右栏overflow: hidden

<!-- html -->
<div class="body">
    <div class="left">1</div>
    <div class="center">2</div>
    <div class="right">3</div>
</div>

<!-- css -->
.left, .center{
    float: left;
    width: 100px;
    margin-right: 20px;
}
 .right{
    overflow: hidden;
}

两边定宽,中间自适应

圣杯布局

布局步骤:
1、三列内容都设置向左浮动。
2、设置center宽度为100%,设置两侧栏的宽度。
3、设置left左边距为负100%,设置right左边距为负的自身宽度。
4、设置container的padding值给左右两块内容留空间。
5、设置left、right为相对定位,左侧的left属性值为负自身宽度,右侧的right属性值为负自身宽度。

<!-- html -->
<div class="container">
    <div class="center"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>

<!-- css -->
.container{
    padding: 0 150px;
}

.center{
    float: left;
    width: 100%;
}

.left, .right{
    position: relative;
    float: left;
    width: 150px;
}

.left{
    left: -150px;
    margin-left: -100%;
}

.right{
    right: -150px;
    margin-left: -150px;
}

双飞翼布局

  • 双飞翼布局的思路和圣杯布局类似,区别在于圣杯使用padding放侧栏,双飞翼使用margin放侧栏,解决了圣杯布局main的最小宽度不能小于左侧栏的缺点。
  • 双飞翼布局不用设置相对布局,以及对应的left和right值。
  • 通过引入相对布局,可以实现三栏布局的各种组合,例如对右侧栏设置position: relative; left: 150px; ,可以实现left+right+content的布局。
<div class="container">
        <div class="content">1</div>
</div>
<div class="left">2</div>
<div class="right">3</div>

.container, .left, .right{
    float: left;
}

.container{
    width: 100%;
}

.left{
    width: 150px;
    margin-left: -100%;
}

.right{
    width: 150px;
    margin-left: -150px;
}

.content{
    margin: 0 150px;
}
posted @ 2018-08-07 17:13  Scapelan  阅读(212)  评论(0编辑  收藏  举报