圣杯布局和双飞翼布局

简介: 圣杯布局和双飞翼布局

54. 圣杯布局和双飞翼布局

一、圣杯布局实现

1. 使用浮动和负边距
<style>
    .container {
    
      padding-left: 200px;
      padding-right: 200px;
    }
    .left, .right {
    
      width: 200px;
      height: 200px;
      background: tomato;
      float: left;
      position: relative;
    }
    .left {
    
      margin-left: -100%;
      right: 200px;
    }
    .right {
    
      margin-left: -200px;
      left: 200px;
    }
    .center {
    
      float: left;
      width: 100%;
      height: 200px;
      background: skyblue;
    }
</style>
<div class="container">
  <div class="center">中央列</div>
  <div class="left">左侧列</div>
  <div class="right">右侧列</div>
</div>

这种实现方式使用了浮动和负边距。中央列占据整个父容器的宽度,左右两侧列使用了负的margin-left将它们移到正确的位置。同时,为了防止左右两侧列遮挡中央列的内容,需要给父容器添加左右两侧的padding

2. 使用Flex布局
<style>
    .container {
    
      display: flex;
      flex-direction: row;
      justify-content: space-between;
    }
    .left, .right {
    
      width: 200px;
      height: 200px;
      background: tomato;
    }
    .center {
    
      flex: 1;
      height: 200px;
      background: skyblue;
    }
</style>
<div class="container">
  <div class="left">左侧列</div>
  <div class="center">中央列</div>
  <div class="right">右侧列</div>
</div>

这种实现方式使用了flex布局。通过给父容器设置display: flex,将中央列设置为flex: 1,使其自动占据剩余的宽度。

3. 使用定位
<style>
    .container {
    
      position: relative;
    }

    .center {
    
      height: 200px;
      background: skyblue;
      margin-left: 200px;
      margin-right: 200px;
    }
    .left, .right {
    
      width: 200px;
      height: 200px;
      position: absolute;
      top: 0;
      background: tomato;
    }
    .left {
    
      left: 0;
    }
    .right {
    
      right: 0;
    }
</style>
<div class="container">
  <div class="center">中央列</div>
  <div class="left">左侧列</div>
  <div class="right">右侧列</div>
</div>

这种实现方式使用了position。中央列通过设置左右两侧的margin来使其占据正确的位置,其中,左侧列的left值为0,而右侧列的right值为0,这样可以将它们固定在页面的左右两侧。

二、双飞翼布局实现

<style>
/* 双飞翼 */
  .container {
    
    width: 100%;
    float: left;
  }
  .center {
    
    margin-left: 200px;
    margin-right: 200px;
    height: 200px;
    background: skyblue;
  }
  .left {
    
    width: 200px;
    height: 200px;
    background: tomato;
    float: left;
    margin-left: -100%;
  }
  .right {
    
    width: 200px;
    height: 200px;
    background: tomato;
    float: left;
    margin-left: -200px;
  }
</style>
<!-- 双飞翼 -->
<div class="container">
  <div class="center">中央列</div>
</div>
<div class="left">左侧列</div>
<div class="right">右侧列</div>

这种实现方式使用了浮动和负边距。中央列占据整个父容器的宽度,并设置了左右两侧的margin使其不会被遮挡。左右两侧列使用了负的margin-left将它们移到正确的位置,而为了防止左右两侧列遮挡中央列的内容,需要给中央列设置左右两侧的margin

需要注意的是,由于左右两侧列是浮动的,所以它们的高度无法撑开父容器,需要在父容器上添加overflow:hidden来防止内容溢出。此外,由于左右两侧列的宽度是固定的,如果需要适应不同的屏幕尺寸,可以使用媒体查询来改变它们的宽度。

相关文章
|
7月前
|
前端开发 容器
前端CSS居中布局
前端CSS居中布局
67 0
|
前端开发
🍊CSS之圣杯布局及双飞翼布局
🍊CSS之圣杯布局及双飞翼布局
296 5
🍊CSS之圣杯布局及双飞翼布局
|
1月前
|
前端开发
前端三栏布局(包括圣杯,双飞翼)
前端三栏布局(包括圣杯,双飞翼)
|
1月前
|
前端开发
两栏布局的实现
两栏布局的实现
|
10月前
双飞翼布局实现
双飞翼布局实现
|
6月前
|
安全 容器
由圣杯布局引发的思考
今天在MDN看到块格式化上下文有点不以为然,关键是它写的高深莫测,读不懂... 于是下午想试试圣杯布局的时候,终究还是逃不过它。🤣 这里不介绍圣杯布局的历史,这样的文章网上不知道多少篇,我来写写千篇一律中的亮点吧,哈哈。
26 0
|
10月前
圣杯布局实现
圣杯布局实现
|
10月前
|
前端开发 数据可视化 容器
CSS 两栏布局和三栏布局的实现
CSS 两栏布局和三栏布局的实现
114 0
|
10月前
|
前端开发
前端经典圣杯布局和双飞翼布局
圣杯布局和双飞翼布局解决的问题是一样的 就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染
79 0
|
容器
2022年了,还是得学圣杯布局与双飞翼布局
2022年了,还是得学圣杯布局与双飞翼布局 今天看别人的面经,发现还是有很多家公司会问圣杯布局以及双飞翼布局,之前我跳过了,因为实际中我几乎没有用过float布局,所以对这两个布局理解起来稍微有一点费劲,但是既然面试可能要问,那还是得把这个理解透,所以这篇文章将带你从零创建一个圣杯布局以及双飞翼布局,小白也能看懂,绝对的保姆级讲解,当然理解有误的希望大家积极补充,共同进步。 可以转载,但请声明源链接:文章源链接justin3go.com(有些latex公式某些平台不能渲染可查看这个网站)
80 0