• 技术文章 >web前端 >css教程

    CSS有几种实现三栏布局的方法

    php中世界最好的语言php中世界最好的语言2018-03-22 09:40:03原创1161
    这次给大家带来CSS有几种实现三栏布局的方法,CSS实现三栏布局的注意事项有哪些,下面就是实战案例,一起来看一下。

    前言

    其实不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景。

    所谓三栏布局就是指页面分为左中右三部分然后对中间一部分做自适应的一种布局方式。

    1.绝对定位

    HTML代码如下:

    <p class="left">Left</p>
    <p class="main">Main</p>
    <p class="right">Right</p>

    CSS代码如下:

    //简单的进行CSS reset
    body,html{
        height:100%;
        padding: 0px;
        margin:0px;
    }
    //左右绝对定位
    .left,.right{
        position: absolute;
        top:0px;
        background: red;
        height:100%;
    }
    .left{
        left:0;
        width:100px;
    }
    .right{
        right:0px;
        width:200px;
    }
    //中间使用margin空出左右元素所占据的空间
    .main{
        margin:0px 200px 0px 100px;
        height:100%;
        background: blue;
    }

    该方法有个明显的缺点,就是如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生层重叠的情况。

    2. 圣杯布局

    HTML代码如下:

    //注意元素次序
    <p class="main">Main</p>
    <p class="left">Left</p>
    <p class="right">Right</p>

    CSS代码如下:

    //习惯性的CSS reset
    body,html{
        height:100%;
        padding: 0;
        margin: 0
    }
    //父元素body空出左右栏位
    body {
        padding-left: 100px;
        padding-right: 200px;
    }
    //左边元素更改
    .left {
        background: red;
        width: 100px;
        float: left;
        margin-left: -100%;
        position: relative;
        left: -100px;
        height: 100%;
    }
    //中间部分
    .main {
        background: blue;
        width: 100%;
        height: 100%;
        float: left;
    }
    //右边元素定义
    .right {
        background: red;
        width: 200px;
        height: 100%;
        float: left;
        margin-left: -200px;
        position: relative;
        right: -200px;
    }

    相关解释如下:

    (1)中间部分需要根据浏览器宽度的变化而变化,所以要用100%,这里设左中右向左浮动,因为中间100%,左层和右层根本没有位置上去

    (2)把左层margin负100后,发现left上去了,因为负到出窗口没位置了,只能往上挪

    (3)按第二步这个方法,可以得出它只要挪动窗口宽度那么宽就能到最左边了,利用负边距,把左右栏定位

    (4)但由于左右栏遮挡住了中间部分,于是采用相对定位方法,各自相对于自己把自己挪出去,得到最终结果

    3. 双飞翼布局

    HTML代码如下:

    <p class="main">
        <p class="inner">
            Main
        </p>
    </p>
    <p class="left">Left</p>
    <p class="right">Right</p>

    CSS代码如下:

    //CSS reset
    body,html {
        height:100%;
        padding: 0;
        margin: 0
    }
    body {
        /*padding-left:100px;*/
        /*padding-right:200px;*/
    }
    .left {
        background: red;
        width: 100px;
        float: left;
        margin-left: -100%;
        height: 100%;
        /*position: relative;*/
        /*left:-100px;*/
    }
    .main {
        background: blue;
        width: 100%;
        float: left;
        height: 100%;
    }
    .right {
        background: red;
        width: 200px;
        float: left;
        margin-left: -200px;
        height: 100%;
        /*position:relative;*/
        /*right:-200px;*/
    }
    //新增inner元素
    .inner {
        margin-left: 100px;
        margin-right: 200px;
    }

    圣杯布局实际看起来是复杂的后期维护性也不是很高,在淘宝UED的探讨下,出来了一种新的布局方式就是双飞翼布局,代码如上。增加多一个p就可以不用相对布局了,只用到了浮动和负边距。和圣杯布局差异的地方已经被注释。

    4. 浮动

    HTML代码如下:

    //注意元素次序
    <p class="left">Left</p>
    <p class="right">Right</p>
    <p class="main">Main</p>

    CSS代码如下:

    //CSS reset
    body,html {
        height:100%;
        padding: 0;
        margin: 0
    }
    //左栏左浮动
    .left {
        background: red;
        width: 100px;
        float: left;
        height: 100%;
    }
    //中间自适应
    .main {
        background: blue;
        height: 100%;
        margin:0px 200px 0px 100px;
    }
    //右栏右浮动
    .right {
        background: red;
        width: 200px;
        float: right;
        height: 100%;
    }

    这种方式代码足够简洁与高效,也容易理解

    总结

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    用HTML+CSS实现下拉菜单

    用CSS3实现发光方格边框
    CSS做出鼠标上移图标旋转

    以上就是CSS有几种实现三栏布局的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:css 样式表 方法
    上一篇:CSS实现带箭头流程可见进度条 下一篇:用css实现浮雕效果
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 什么是BFC?深入了解BFC,聊聊作用• CSS3动画实战之:超酷炫的粘性气泡效果• 纯CSS3怎么实现波浪效果?(代码示例)• 深入探究CSS鼠标指针交互效果• 12个值得收藏的 CSS 技巧!!
    1/1

    PHP中文网