1. 前言

  圣杯布局和双飞翼布局是各类网站经常使用的布局,本文将通过两种布局的 示例图布局过程、以及 完整代码 进行讲解,如果你想进行练习,可以到我的 github地址 上获取已去除了关键代码的版本,只留下最初始的元素和颜色样式,供你对自己进行强化的练习;同时,你也可以在这里获取到 完整代码

2. 圣杯布局

2.1 示例图

  • 拥有 headerfooter,中间是主内容行
  • leftright 分别固定了宽度,center 会随着整体布局宽度的变化而进行伸缩

常见的类似圣杯布局如 CSDN 文章页:

2.2 设计过程

  • 以下讲解中,会分别使用如 centerleftright 等叫法来描述某一个色块
  • 此讲解需要了解 margin 为负值 时会产生的效果,如果不了解的话请务必先看这篇文章 margin为负值会发生什么?
  • 可以结合如下 2.3 完整代码 进行理解,里面的 注释序号对应该设计过程的序号

1)初始样式

2)把中间部分留出左右元素的宽度

3)margin-right 能让 right 元素被其自身右方的空白元素覆盖上去,相当于自身宽度被消除,从而能浮动到 center 上去

4)left 向左移动 center 的宽度,来移动到 center 所在的行

问:为何设置 margin-left: 100% 就能让 left 顶到 center 的最左边?

答:由于 center 内边距的存在,现在 left 的真实位置可以理解为如下图,因此向左偏移 center 的宽度,就让能 left 到达 center 的最左边

5)left 再向左移动自身宽度,露出被覆盖的 center

问:为何需要设置 position: relative

答:因为 relative 设置,并且设置了 right: 200px 后,元素只会 自身进行移动,不会影响到其他元素。

2.3 完整代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>圣杯布局</title><style type="text/css">body {min-width: 550px;}#header {background-color: #999999;}#middle{/* 2.把中间部分留出左右元素的宽度 */padding-left: 200px;padding-right: 150px;}#middle .column{float: left;height: 200px;}#left{width: 200px;background-color: #FFFF00;/* 4. 向左移动center的宽度 */margin-left: -100%;/* 5. 再向左移动自身宽度,露出被覆盖的center块 */position: relative;right: 200px;}#center{width: 100%;background-color: pink;}#right{/* 3.margin-right让右方元素覆盖自身,达到消除自身宽度的目的,浮动到center上面去 */margin-right: -150px;width: 150px;background-color: #CCCCCC;}#footer {background-color: #999999;}.clearfix:after{display: table;content: '';clear: both;}</style></head><body><div id="header">header</div><div id="middle" class="clearfix"><div id="center" class="column">center</div><div id="left" class="column">left</div><div id="right" class="column">right</div></div><div id="footer">footer</div></body>
</html>

3. 双飞翼布局

3.1 示例图

  • leftright 固定宽度
  • 中间 main 会随着整体布局宽度的变化而伸缩

3.2 设计过程

1)整体设置浮动

2)将 main 左右内边距留出 left 和right 的宽度

3)left 向左偏移 main 的宽度

4)right 向左偏移自身宽度

3.3 完整代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>双飞翼布局</title><style type="text/css">body {min-width: 550px;}.col {/* 1.设置浮动 */float: left;}#main {width: 100%;height: 200px;background-color: #FFC0CB;}#main-wrap {/* 2.将 main 左右内边距留出 left 和 right 的宽度 */margin: 0 200px 0 150px;}#left {width: 150px;height: 200px;background-color: #FFFF00;/* 3.left 向左偏移 main 的宽度 */margin-left: -100%;}#right {width: 200px;height: 200px;background-color: #cccccc;/* 4.right 向左偏移自身宽度 */margin-left: -200px;}</style>
</head>
<body><div id="main" class="col"><div id="main-wrap">main</div></div><div id="left" class="col">left</div><div id="right" class="col">right</div>
</body>
</html>

4. 技术点总结

双飞翼 圣杯
主内容两边的边距 用 margin-left 和 margin-right 用 padding-left 和 padding-right
左右元素的偏移 均使用 margin-left
左:向左偏移main的宽度;
右:向左偏移自身宽度
左:使用 margin-left(向左偏移main的宽度)
右:margin-right(取消自身宽度)

【CSS】圣杯布局和双飞翼布局(包括完整代码)相关推荐

  1. 前端必经之路:CSS页面布局(深入理解浮动布局、定位布局、圣杯布局和双飞翼布局等重要布局方案)

    建筑师在对一栋建筑物进行施工之前,首先会根据建筑图纸上的平面图.立体图.剖面图和构造详图等对建筑物进行整体布局后再从局部施工(当然不排除有先装修完厕所再砌卧室围墙的奇葩).在一个网页页面的搭建过程中, ...

  2. css圣杯布局与双飞翼布局_CSS布局研讨会已于2018年更新

    css圣杯布局与双飞翼布局 Yesterday I made live fourteen brand new videos, plus a bunch of updates to existing m ...

  3. [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现

    [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现 一: section{height: 100%; overflow: hidden;clear:both; } .left{ height: ...

  4. css和css的圣杯布局,CSS布局--圣杯布局和双飞翼布局以及使用Flex实现圣杯布局

    前言 我曾一度觉得总写css的前端很low,有了这种思想以后我便远离网页布局,H5的工作更不想接,沉迷于页面逻辑和封装组件.直到最近我面试,面试官说我css3理解的不熟,我起初很不屑,但后来静下来反省 ...

  5. css - 圣杯布局和双飞翼布局

    参考: Flex 布局教程:语法篇 Flex布局 那些年,奇妙的圣杯与双飞翼,还有负边距 CSS布局中圣杯布局与双飞翼布局的实现思路差异在哪里? CSS布局奇淫巧计之-强大的负边距 聊聊为什么淘宝要提 ...

  6. CSS经典布局--圣杯布局和双飞翼布局

    圣杯布局与双飞翼布局,都是属于三列布局的经典布局. 双飞翼布局是圣杯布局的优化版,由淘宝UED提出: 它们的效果图类似,但是实现方法不同. 文章目录 一.圣杯布局和双飞翼布局的常规方法 1.圣杯 po ...

  7. css(8)圣杯布局、双飞翼布局、两栏布局

    现在已经很少用到浮动了,一般用flex就可以很好的解决了.但是面试还是考,所以还是写一下 三栏布局的关键点是要答出浮动和margin-left为负值 圣杯布局 圣杯布局和双飞翼布局都是前端工程师需要日 ...

  8. 大厂面试必考题:三行布局之圣杯布局和双飞翼布局的区别

    前言 今天给大家分享一个圣杯布局和双飞翼布局及他们之间的区别,这两个三行布局一直是一些大厂前端面试的高频考点,带你走进大厂面试题,活不多说,冲冲冲~ 布局效果 这两个种三行布局效果是一样的,实现的效果 ...

  9. 圣杯布局和双飞翼布局详解

    圣杯布局 刚学圣杯双飞翼布局,有点蒙,特写下来加深印象 首先要明确 圣杯布局和双飞翼布局 要解决的问题是什么? 要解决的就是让浏览器先加载最总要的那部分给客户看,我们做前端开发的时候要切合实际场景开发 ...

最新文章

  1. java 二分查找
  2. word 2010 从第三页开始设置页码
  3. newLisp使用初步
  4. python标准库之logging
  5. ireport怎么套打_DNF小小王国历险记巨人击退战怎么打 巨人击退战通关技巧攻略...
  6. easyui 添加下拉框数据_功能更新:熟用仪表盘这个功能,你可以少建90%的数据报表...
  7. 一文教你分清持续集成,持续交付,持续部署!
  8. 获取WIN7的trustedinstaller权限
  9. Ubuntu 16.04无线网卡RTL8723BE频繁掉线及信号不足解决办法
  10. flex 随机数产生方法
  11. oralce启动问题You may need to set ORACLE_HOME to your Oracle software directory
  12. 云栖大会,一场边缘云计算的「超前瞻」之约
  13. (清风)数学建模:模糊分析法(二)应用
  14. 合并与拆分数据模型(MSDM:Merging Spliting Data Modeling)
  15. 如何对ChatGPT进行Prompt逆向工程, Prompt engineering生成Prompt的核心是给出例子,反推生成例子的通用Prompt模板mjourney,给出图片生成该图的Prompt
  16. python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例
  17. redis和mongdb的一些基本操作和命令以及使用python连接redis和mongdb
  18. 如何根据KeyValue值取出相应的键值
  19. leaflet加载国家天地图服务
  20. 贵州省大数据发展管理局到访法大大交流指导

热门文章

  1. java调用c语言的动态库,hu-unix下面java调用c语言动态链接库.docx
  2. 关于人的发展的理性思考与误区分析
  3. 展翅高飞 微软中文技术论坛
  4. 由 Babel 理解前端编译原理
  5. 服开与编排,老兵新传
  6. .htaccess学习记录
  7. IPv6 Blackhole策略路由
  8. 简单的手机记事本有哪些?
  9. 启用Win8/10(中文版/核心版/家庭版)中被阉割的远程桌面服务端
  10. 无锡鼋头渚-樱花谷的美丽传说