美文网首页
CSS 经典三列布局之圣杯布局

CSS 经典三列布局之圣杯布局

作者: 调皮的小卷羊 | 来源:发表于2017-05-07 16:23 被阅读0次

    圣杯布局

    圣杯布局是典型的 CSS 布局问题,有着众多的解决方案。

    圣杯布局是一种非常经典和常用的布局方式,其所指的是三列布局,中间宽度自适应,两边定宽;或者两列布局,主体宽度自适应,左边或右边定宽。

    • 边栏应流动居中,定宽。
    • 中间一栏 (主要内容) 在 HTML 源码中应该首先元素出现。
    • 所有栏同高,忽略实际高度。
    • 使用的 HTML 标记尽量少。
    • 当页面内容不够充满页面时,页脚应“粘”在底部。

    过程

    <header>header</header>
    <div class="container clearfix">
        <div class="main">main</div>  // main放在前面先渲染
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
    <footer>footer<footer>
    
    • 设置中间三个div向左浮动,使其排列在一行
    • 设置footer元素清除浮动,阻止与上面的main部分重叠。
    • 设置中间三个div的宽度,左右定宽,中间宽度自适应。
    .container > div {
        height: 10vh;
        float: left;
    }
    
    .main {
        width: 100%;
        background-color: #5AEBF0;
    }
    
    .left {
        width: 200px;
        background-color: #F668E0;
    }
    
    .right {
        width: 200px;
        background-color: #F668A4;
    }
    
    1494083623x2890174022.png
    • 主内容栏宽度变小,设置container的padding。
    • left盒子上去,设置left的margin-left为-100%,。
     .container {
        padding-left: 200px;
    }
    .left {
        width: 200px;
        background-color: #F668E0;
      margin-left: -100%;
    }
    
    1494084112x2890174022.png

    由于 container 设置了内边距,因此中间栏看起来就处在了网页的中间,但左右两栏由于排在中间栏的后面,且因为空间不够被挤到了中间栏的下面

    • left盒子移动到左边,使用相对定位,设置left属性为盒子宽度等量的负值。
    .container > div {
        height: 10vh;
        float: left;
        position: relative;
    }
    
    .left {
        width: 200px;
        background-color: #F668E0;
        margin-left: -100%;
        left: -200px;             /*  或者使用 right: 200px;*/
    }
    
    1494084481x2890174022.png
    • 最后,我们需要把右侧栏放上去,此时只需利用上面的原理把他放到 container 的右外边距的位置即可,我们需要再一次设置一个负外边距的值,它等于右侧栏的宽度
    1494085959x2890174022.png

    相关文章

      网友评论

          本文标题:CSS 经典三列布局之圣杯布局

          本文链接:https://www.haomeiwen.com/subject/canutxtx.html