• CSS学习笔记--圣杯布局与双飞翼布局


    圣杯布局和双飞翼布局都是左右固定宽度中间自适应的三栏式布局,主要区别在于实现方式的不同。

    一、圣杯布局

    <div class="parent">
        <div class="center">center</div>  //主要显示部分DOM结构写在前面优先渲染
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
    .parent{
        padding: 0 100px;
    }
    .center,.left,.right{
        height: 100px;
        float: left;
    }
    .center{
        width: 100%;
        background-color: yellow;
    }
    
    .left{
        margin-left: -100%;
        width: 100px;
        background-color: red;
        position: relative;
        left: -100px;
    }
    .right{
        position: relative;
        right: -100px;
        margin-left: -100px;
        width: 100px;
        background-color: springgreen;
    }

    实现步详细步骤:

    1.分别为三栏设置左浮动使其在同一行。

    2.center主要内容部分设置100%使其充满整行,将left和right部分挤到下一行。

    3.对left部分设置margin-left:-100%,margin-left是基于文档流的,负值即向前移动,因为此时left处于文档流第二行开头,设置任意负值都会移动到第一行,-100%即移动到文档流最开始的位置。同时对right部分设置margin-left等于负的right部分的宽度,使right部分移动到第一行最后。

    4.此时左中右三栏已经处于同一行,但center部分由于宽度是100%充满了整行导致被左右各遮挡了一部分,对此我们设置父元素的padding属性等于左右宽度,使center部分缩小空出左右部分的位置。

    5.最后对左右部分设置相对定位,分别偏移各自宽度,移动到空出的位置,达到最终效果。

    二、双飞翼布局

    <div class="content">
        <div class="center">
            <div class="center_content">center</div>
        </div>
        <div class="left">left</div>
        <div class="right">right</div>
    </div>    
    .center,.left,.right{
        height: 100px;
        float: left;
    }
    .center{
        width: 100%;
        background-color: yellow;
    }
    .center_content{
        margin: 0 100px;
    }
    .left{
        margin-left: -100%;
        width: 100px;
        background-color: red;
    }
    .right{
        margin-left: -100px;
        width: 100px;
        background-color: springgreen;
    }

    实现步详细步骤:

    1.在HTML中为center部分多加一层div

    2.分别为三栏设置左浮动使其在同一行。

    3.center主要内容部分设置100%使其充满整行,将left和right部分挤到下一行。

    4.对left部分设置margin-left:-100%,margin-left是基于文档流的,负值即向前移动,因为此时left处于文档流第二行开头,设置任意负值都会移动到第一行,-100%即移动到文档流最开始的位置。同时对right部分设置margin-left等于负的right部分的宽度,使right部分移动到第一行最后。

    5.对center内部添加的div设置margin等于左右部分宽度,使其在center内部空出左右部分位置,达到最终效果。

    双飞翼布局和圣杯布局的前几步是一样的,区别如下:

      双飞翼布局:内部多加一个div对其设置margin属性

      圣杯布局:父元素设置padding属性,左右部分相对定位偏移

  • 相关阅读:
    How does a single thread run on multiple cores?
    一篇所有研究生都该读的好文:阳光温热 科研静好
    Running Slic3r from git on GNU Linux
    3D打印的各种问题及解决方案
    新工科的新视角:面向可持续竞争力的敏捷教学体系
    What is Modularity
    3d打印模型为什么文件格式必须是stl和stp的?
    剑指offer 39.平衡二叉树
    剑指offer 38.二叉树的深度
    剑指offer 37.数字在排序数组中出现的次数
  • 原文地址:https://www.cnblogs.com/hamihua/p/11778033.html
Copyright © 2020-2023  润新知