一、圣杯布局
    思路:
    1、center部分宽度为100%且先渲染
    2、父容器盒子设置padding
    3、左侧栏利用margin-left负值进行位移,再用相对定位往左侧移动自身宽度(也可以直接用css3,calc函数calc(-100% - width))
    4、右侧栏,利用margin-right负值,将盒子自身实际宽度减为0,盒子自然就往上一行位移,排在最右侧。为啥不用margin-left负值,因为父容器设置了内边距,将右侧栏直接往前位移,会挤占中间部分的宽度

    1. <div class="container">
    2. <!-- // 中间视图优先渲染,放在另外两栏前 -->
    3. <div class="center colume"></div>
    4. <div class="left colume"></div>
    5. <div class="right colume"></div>
    6. </div>
    7. .container {
    8. padding: 0 200px;
    9. }
    10. .colume {
    11. float: left;
    12. height: 100px;
    13. }
    14. .center {
    15. /* 宽度变化 */
    16. width: 100%;
    17. background-color: palegoldenrod;
    18. }
    19. .left {
    20. width: 200px;
    21. /* 先移到父容器content左侧,再移到左边界 */
    22. /* margin-left负值可以将左侧栏往左移动,直到父容器最左侧 */
    23. margin-left: -100%;
    24. /* margin-left: calc( -100% - 200px) 效果一样,不需要再用相对位移 ; */
    25. /* 利用相对定位(根据自身定位),可以将左侧栏移到最左侧 */
    26. position: relative;
    27. /* 相对定位,相对自己的边框定位 */
    28. right: 200px;
    29. /* 和left: -200px一个效果 */
    30. background-color: burlywood;
    31. }
    32. .right {
    33. width: 200px;
    34. /* margin-right和margin-bottom为负值时,都有一种压缩自身空间的效果, */
    35. /* 当压缩到自身宽度时,等于不占空间,自然就往上面排列 */
    36. /* 不能使用margin-left负值,右侧栏宽度没变,这样会挤占中间内容空间(单纯的往左侧唯一,和margin-right不一样) */
    37. margin-right: -200px;
    38. background-color: lightgreen;
    39. }

    二、双飞翼布局
    由淘宝团队提出,比双飞翼布局更简洁
    思路:
    1、所有外层盒子都向左浮动
    2、中间父容器盒子宽度为100%(中间父容器不设置margin,会把整个页面撑大),内部容器设置margin: 0 200px
    3、左侧栏移动:margin:-100%;
    4、右侧栏移动:直接设置mrgin-left:-200px;

    1. <body>
    2. <style>
    3. .colume {
    4. float: left;
    5. height: 100px;
    6. }
    7. .center {
    8. width: 100%;
    9. background-color: palegoldenrod;
    10. }
    11. .left {
    12. width: 100px;
    13. background-color: palegreen;
    14. margin-left: -100%;
    15. }
    16. .right {
    17. width: 100px;
    18. background-color: darkcyan;
    19. margin-left: -100px;
    20. }
    21. .innerCenter {
    22. margin: 0 100px;
    23. }
    24. </style>
    25. <div class="center colume">
    26. <div class="innerCenter">innerCenter</div>
    27. </div>
    28. <div class="left colume"></div>
    29. <div class="right colume"></div>
    30. </body>