css之圣杯布局和双飞翼布局

圣杯布局和双飞翼布局的目的

  • 三栏布局,中间一栏最先加载和渲染(内容最重要)
  • 两侧内容固定,中间内容随着宽度自适应
  • 一般用于pc网页

技术总结

  • 使用float布局
  • 两侧使用margin负值以便和中间内容横向重叠
  • 防止中间内容被两侧覆盖,一个用padding, 一个用margin

技术要点

  • margin-top和margin-left负值,元素向上、向左移动
  • margin-right负值,右侧元素左移,自身不影响
  • margin-bottom 负值,下方元素上移,自身不影响

圣杯布局

使用padding和margin负值以及position实现

xml 复制代码
  <style>
    body {
      min-width: 550px;
    }
    #header {
      background-color: blanchedalmond;
    }
    #main {
      padding-left: 200px;
      padding-right: 200px;
    }
    #center {
      width: 100%;
    }
    #left {
      background: red;
      width: 200px;
      margin-left: -100%; // 向左移动,父元素的宽度,到达center的最左侧
      position: relative;
      right: 200px; // 根据自身向左移动
    }
    #right {
      background: gold;
      width: 200px;
      margin-right: -200px;
    }
    #footer {
      background-color: aquamarine;
    }
    .clearfix::after {
      content: '';
      display: block;
      clear: both;
    }
    #main .column {
      float: left;
    }
  </style>
  
  <body>
  <div id="header">头部</div>
  <div id="main" class="clearfix">
    <div id="center" class="column">中</div>
    <div id="left" class="column">左</div>
    <div id="right" class="column">右</div>
  </div>
  <div id="footer">底部</div>
</body>

双飞翼布局

使用margin和margin负值实现

xml 复制代码
 <style>
    body {
      min-width: 550px;
    }
    #main {
      width: 100%;
      height: 200px;
      background: red;
    }
    
    .column {
      float: left;
    }
    #left {
      width: 200px;
      height: 200px;
      background-color: aquamarine;
      margin-left: -100%;
    }
    #right{
      width: 200px;
      height: 200px;
      background-color: blue;
      margin-left: -200px;
    }
    #main-warp {
      margin: 0 200px 0 200px;
    }
  </style>
  <body>
  <div id="main" class="column">
    <div id="main-warp">中</div>
  </div>
  <div id="left" class="column">左</div>
  <div id="right" class="column">右</div>
</body>
相关推荐
计算机魔术师11 分钟前
AI开源社区迎来最大并购案:Hugging Face以129亿美元估值入局英伟达
前端
mayaairi14 分钟前
JS DOM与事件处理完全指南
服务器·前端·javascript
_明月22 分钟前
汇川技术股份有限公司面试--Java外包岗
java·面试·职场和发展
恋猫de小郭27 分钟前
Firebase 如何让全球 Android 和 Flutter 开发者集体 Build Fail
android·前端·flutter
水管在开花.27 分钟前
RAG:知识库问答系统教学②-零基础保姆级教程
人工智能·面试·agent·rag
墨白曦煜28 分钟前
智能体架构范式总结(React、Plan-And-Solve、Reflection)
前端·react.js·前端框架
qq_4260039631 分钟前
多语言新增语种全量测试策略的测试范围
前端·javascript·python·自动化
frjc42 分钟前
Node.js 与 npm 极简安装教程
前端·npm·node.js
IMPYLH43 分钟前
HTML 的 <main> 元素
前端·html
深念Y1 小时前
微服务抽取路线图:从胖单体到 ARM 集群
前端·arm开发·数据库·后端·微服务·云原生·架构