css圣杯布局和双飞翼布局

一,圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应。

方法一,圣杯布局

实现效果:左边固定宽度200px,右边固定宽度300px,中间自适应。

实现方法:主体部分三个子元素都设置浮动,左边子元素设置margin-left:-100%,右边子元素设置margin-left:-200px;

html结构:

<div class="container">
    <div class="main">main</div>
    <div class="left">left</div>
    <div class="right">right</div>
</div>

css清单:

.container{
            padding:0 300px 0 200px;
            min-width:500px;
        }
        .left,.main,.right{
            position:relative;
            min-height:130px;
            float:left;
        }
        .left{
            left:-200px;
            width:200px;
            margin-left:-100%;
            background-color: #6190ef;
        }
        .main{
            width:100%;
            background-color: #e08e81;
        }
        .right{
            width:300px;
            right: -300px;
            margin-left:-300px;
            background-color: #d6f5ba;
        }

方法二:双飞翼布局

双飞翼布局解决问题的方案前一半是相同的,也是三栏全部左浮动,左右两栏加上负margin让其跟中间栏div并排,以形成三栏布局。

不同在于解决“中间栏div”内容不被遮拦问题的思路不一样。

html结构发生了变化:

<div class="container">
    <div class="main">
        <div class="content">main</div>
    </div>
    <div class="left">left</div>
    <div class="right">right</div>
</div>

css清单:

.left,.main,.right{
            min-height:130px;
            float:left;
            text-align: center;
        }
        .left{
            width:200px;
            margin-left:-100%;
            background-color: #6190ef;
        }
        .main{
            width:100%;
            background-color: #e08e81;
        }
        .main .content{
            margin:0 300px 0 200px;
        }
        .right{
            width:300px;
            margin-left:-300px;
            background-color: #d6f5ba;
        }

方法三:Flex布局

html结构:

<div class="container">
        <div class="left">left</div>
        <div class="center">center</div>
        <div class="right">right</div>
    </div>

css清单:

 .container{
            display: flex;
            height:150px;
        }
        .left{
            background-color: #ffa720;
            flex: 0 0 200px;
        }
        .center{
            background-color: #7081ff;
            flex: 1;
        }
        .right{
            background-color: #1cd2af;
            flex: 0 0 300px;
        }

方法四:绝对定位实现

html结构:

<div class="container">
    <div class="main">main</div>
    <div class="left">left</div>
    <div class="right">right</div>
</div>

css清单:

.container{
            position:relative;
        }
        .left,.main,.right{
            top:0;
            min-height:130px;
        }
        .left{
            position:absolute;
            left:0;
            width:200px;
            background-color: #6190ef;
        }
        .main{
            margin:0 300px 0 200px;
            background-color: #e08e81;
        }
        .right{
            position:absolute;
            right:0;
            width:300px;
            background-color: #d6f5ba;
        }

 

posted @ 2018-09-26 11:21  千寻的天空之城  阅读(153)  评论(0编辑  收藏  举报