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>
相关推荐
快乐小土豆~~7 分钟前
echarts柱状图的X轴label过长被重叠覆盖
前端·javascript·vue.js·echarts
hhcccchh16 分钟前
1.1 HTML 语义化标签(header、nav、main、section、footer 等)
java·前端·html
小李子呢021140 分钟前
前端八股2---Proxy 代理
前端·javascript·vue.js
bjzhang751 小时前
使用 HTML + JavaScript 实现组织架构图
前端·javascript·html·组织架构图
军军君011 小时前
Three.js基础功能学习十六:智能黑板实现实例三
前端·javascript·css·vue.js·3d·前端框架·threejs
海上彼尚1 小时前
SVG矢量图形快速入门
前端·html5
嗷o嗷o1 小时前
Android App Functions 深入理解
前端
UXbot2 小时前
AI原型设计工具评测:从创意到交互式Demo,5款产品全面解析
前端·ui·设计模式·ai·ai编程·原型模式
落魄江湖行2 小时前
硅基同事埋的坑,我用2小时才填平:Nuxt 4 路由踩坑:可选参数 [[id]] 与 [id] 的区别
前端
一勺菠萝丶2 小时前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库