圣杯布局和双飞翼布局?

160 阅读2分钟

这是我参与「4月日新计划更文活动」的第11天。

我们今天讲一下圣杯布局和双飞翼布局的使用和区别。

首先,

前端圣杯布局和双飞翼布局都是三栏布局,它们的主要区别在于实现方式和解决问题的不同。

前端圣杯布局使用了负边距和相对定位的技巧,可以解决中间主体内容先加载的问题,但是容易造成代码复杂难以维护的问题。并且可以更好地处理左右两栏高度不一致的情况。

而双飞翼布局则是使用了浮动和margin负值的技巧,可以解决中间主体内容先加载的问题,并且代码相对简单易于维护,但是会增加一个额外的div标签,并且需要添加额外的clearfix样式来清除浮动。

从定义上理解了这两者的差异跟区别,现在就让我们从代码上来看下这两个的区别吧。

不多说,上代码。

圣杯布局

下面是圣杯布局的效果。

图片.png

下面是代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>圣杯布局</title>
  </head>
  <style>
  .container {
    position: relative;
    padding-left: 200px;
    padding-right: 200px;
    height: 300px;
  }
  .left {
    position: absolute;
    top: 0;
    left: 0;
    width: 200px;
    height: 100%;
    background-color: #ccc;
  }
  .right {
    position: absolute;
    top: 0;
    right: 0;
    width: 200px;
    height: 100%;
    background-color: #ccc;
  }
  .main {
    width: 100%;
    height: 100%;
    background-color: #eee;
  }
  </style>
  <body>
    <div class="container">
      <div class="left"></div>
      <div class="right"></div>
      <div class="main"></div>
    </div>
  </body>
</html>

其中left和right两个栏目使用了绝对定位的方式,通过负边距来实现覆盖在主体内容上方的效果。主体内容使用相对定位的方式,并设置了左右padding来避免被左右两栏遮挡。

双飞翼布局

下面是双飞翼布局的效果。

图片.png

下面是代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>双飞翼布局</title>
  </head>
  <style>
  body {
    position: relative;
  }
  .left {
    position: absolute;
    left: 0;
    width: 100px;
    height: 500px;
    background-color: red;
  }
  .right {
    position: absolute;
    right: 0;
    width: 100px;
    height: 500px;
    background-color: blue;
  }
  .center {
    position: absolute;
    left: 100px;
    width: calc(100% - 200px);
    height: 500px;
    background-color: yellow;
  }
  </style>
  <body>
    <div class="left">left</div>
    <div class="center">center</div>
    <div class="right">right</div>
  </body>
</html>

这里在主体内容上巧妙的使用了calc的属性,达到了动态缩放宽度的效果。

以上就是我今天学习圣杯布局和双飞翼布局的总结。

看到掘金上的好文章,如果对你有帮助,顺手点个赞,或者把文章收藏。不用担心找不到了,以后也能经常收到类似好回答,我会持续进行更新。