圣杯布局的学习笔记~

圣杯布局的优点就是优先渲染中间的元素,如下结构所示,浏览器渲染时是按序执行,因此会优先渲染center元素。

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

1.首先使得container为左右两个元素预留padding

.container{
    padding: 0 150px 0 200px;
}

2.其次,容器container内的三个子元素均设置浮动属性,产生浮动流

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

3.为center元素设置属性,注意三个子元素的宽高都需要添加,center的宽度应设置为100%,因为其宽度是自适应的。

    .center{
        width: 100%;
        height: 300px;
        background-color: blue;   
    }

左右灰色区域即为我们提前预留的padding
center属性设置
4.设置left元素的属性
当我们只设置宽高时,由于center的宽度是100%,占满了第一行,left元素只能排在第二行,不能与center处在同一行。

.left{
        height: 300px;   
        width: 200px;
        background-color: red;  
}

设置left属性
接下来我们利用负外边距,使得left元素能够与center处在同一行。即设置margin-left:-100%,这样能够保证left元素和center元素的左边缘是对齐的。除此之外,还可以使用position:absolute达到此目的,因为position和float是处于不同层级的,可以理解为彼此看不到,当同时存在position:absolute和float:left时,由于absolute的优先级更高,float就不起作用了。

//方法1
.left{
        height: 300px;   
        width: 200px;
        background-color: red;  
        margin-left:-100%;
}
//方法2
.left{
        height: 300px;   
        width: 200px;
        background-color: red;  
        position:absolute;
}

此时的left元素已经与center元素处在同一行,但是left元素遮盖了center元素,此时我们需要让left移动到我们预留的padding区域,就可以解决这个覆盖的问题。
负外边距
为left元素继续设定left属性,但是这里需要注意,left属性对position:static的盒子是不起作用的,因此我们需要给left元素设定position。
此处我们是希望left元素在此位置的基础上,左移200px的,因此应该将position设定为relative,所以我们刚刚提到的方法2就不起作用了。

.left{
        height: 300px;   
        width: 200px;
        background-color: red;  
        margin-left:-100%;
        position:relative;
        left:-200px;
}

在这里插入图片描述
5.设置right元素的属性
同样我们可以利用负外边距,将right元素和center元素移动到同一行。

    .right{    
        width: 150px;
        height: 300px;
        background-color: green;
        margin-right: -150px;
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值