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>
相关推荐
programhelp_18 分钟前
2026 Adobe面试全流程拆解|OA/VO/Onsite实战指南+高频考点避坑
adobe·面试·职场和发展
星火开发设计2 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
晨非辰2 小时前
【数据结构入坑指南(三.1)】--《面试必看:单链表与顺序表之争,读懂“不连续”之美背后的算法思想》
数据结构·c++·人工智能·深度学习·算法·机器学习·面试
得一录3 小时前
AI面试·简单题
人工智能·面试·职场和发展
小李独爱秋3 小时前
模拟面试:什么是微服务架构,它的优缺点是什么?
算法·微服务·面试·职场和发展·框架·架构师
cc.ChenLy4 小时前
【CSS进阶】毛玻璃效果与代码解析
前端·javascript·css
何中应4 小时前
使用Jenkins部署前端项目(Vue)
前端·vue.js·jenkins
3秒一个大4 小时前
JWT 登录:原理剖析与实战应用
前端·http·代码规范
NEXT064 小时前
2026 技术风向:为什么在 AI 时代,PostgreSQL 彻底成为了全栈工程师的首选数据库
前端·数据库·ai编程
NEXT064 小时前
拒绝“盲盒式”编程:规范驱动开发(SDD)如何重塑 AI 交付
前端·人工智能·markdown