css主流布局--圣杯布局

css主流布局–圣杯布局

在这里插入图片描述
圣杯布局是来源于该布局效果类似圣杯而得名,简单的来说,就是指三行三列的布局。
圣杯布局的核心在于中间主体部分:左右定宽+中间自适应的布局效果
在这里插入图片描述
HTML

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

CSS

 .left,
        .right,
        .center{
            height: 300px;
        }
        .left,
        .right{
            width: 300px;
        }
        .left{
            background-color: brown;
            float: left;
        }
        .center{
            background-color: darkgoldenrod;
            margin-left: 300px;
            margin-right: 300px;
        }
        .right{
            background-color:purple;
            float: right;
          }

在这里插入图片描述
从图中可以看出,left浮动,而center没有浮动,所以center会向前移动占据left的位置,所以center自适应宽度与left在同一水平上。而此时兄弟元素right没有浮动,当前一个元素没有浮动,而后一个元素浮动的时候,浮动的元素是不允许超过前面的元素的,所以是前后排列。
因此,解决方法就是将right元素移到center的前面去,那么,前面两个元素都浮动,center就会自然移动占据剩余位置。
HTML

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

在这里插入图片描述
在实际开发的过程中,这种情况是有问题的,我们浏览器在渲染时是按照顺序的,我们一般会将重要的数据放在center中,这样会及时显示内容。因此,最好的是将center放在left的前面,但是布局上就不能满足了。

圣杯布局的解决方案

在大型网站中可能出现的问题及其解决方法。
HTML

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

里面涉及一个知识,就是高度坍塌,这种情况一般出现在,包裹了子级元素的父级元素中,一,若子级元素的内容为空,则父级元素的高度坍塌,当在自己中加入文本后,父级元素的高度将被撑开,使得父级元素的高度与文本高度相同。二,若给子级元素设置为浮动,由于子级元素脱离文档流无法撑开父级元素,这样父级元素的高度也会坍塌。
CSS:

 .left,
        .right,
        .center{
            height: 300px;
            float: left;
        }
        .left,
        .right{
            width: 300px;
        }
        .left{
            background-color: brown;
        }
        .center{
            background-color: darkgoldenrod;
        }
        .right{
            background-color:purple;
          }

在这里插入图片描述
那么我们需要给父级元素设置高,我将父级元素设置为300px。
此时,由于center元素是自适应宽度为0。
接下来进行分析,设置center宽度为100%后,

    .center{
            width: 100%;
            background-color: darkgoldenrod;
        }

浮动的元素,在一行占满后会自动换行
在这里插入图片描述
现在,将parent元素两边空出300px,
CSS:

 .parent{
            height: 300px;
            margin-left: 300px;
            margin-right: 300px;
        }

疑问,为什么此时,left元素的左边也空白300px,因为包裹在parent父级元素里面吗?
在这里插入图片描述
后面的布局原理有点不明白,后续继续更新。
完整CSS代码

 .parent{
            height: 300px;
            margin-left: 300px;
            margin-right: 300px;
        }
        .left,
        .right,
        .center{
            height: 300px;
            float: left;
        }
        .left,
        .right{
            width: 300px;
        }
        .left{
            background-color: brown;
            margin-left: -100%;
            position: relative;
            left: -300px
        }
        .center{
            width: 100%;
            background-color: darkgoldenrod;
        }
        .right{
            background-color:purple;
            margin-left:-300px;
            position: relative;
            right: -300px;
          }

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值