博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三栏式布局(所谓的圣杯和双飞翼)
阅读量:6705 次
发布时间:2019-06-25

本文共 3080 字,大约阅读时间需要 10 分钟。

前面的话

  常常听说圣杯布局和双飞翼布局,以为是两个很高级的语汇。但实际上,他们只是三栏式布局的两种布局方法而已。本文将介绍三栏式布局的4种思路

 

float

【1】圣杯布局

  圣杯布局使用float、负margin和relative,不需要添加额外标签。.main元素设置padding,为两侧定宽元素留出位置。内容元素设置100%宽度,占据中间位置。而两侧定宽元素通过设置负margin和relative的偏移属性配合,到达相应位置

  缺点: 并没有实现等高布局;使用了相对定位,扩展性不好

top

main

main

left

right

bottom

【2】双飞翼布局

  双飞翼布局在圣杯布局的基础上,通过为.main元素外添加一层div结构,不使用相对定位。在.main元素上设置margin。两侧的定宽列通过margin来占据.main元素的margin区域

  缺点: 并没有实现等高布局,增加了html结构

top

main

main

left

right

bottom

【3】float + box-sizing + background-clip

  .main元素的border区域为两侧定宽列的所在区域,实现伪等高效果;设置.main的padding和background-clip来实现元素间隔。两侧元素通过负margin调整到.main元素的border区域

  缺点: 兼容性不好

top

main

main

left

right

bottom

 

absolute

  设置子元素的top:0;bottom:0;使得所有子元素的高度都和父元素的高度相同,实现等高效果

  缺点: 需要为.middle元素设置高度,扩展性较差

top

main

main

left

right

bottom

 

flex

  flex中的伸缩项目默认都拉伸为父元素的高度,可实现等高效果。通过改变伸缩项目的order,可以实现元素顺序调换的效果

  缺点: 兼容性不高

top

main

main

left

right

bottom

 

grid

top

main

main

left

right

bottom

 

总结

  由于限定了主要内容元素在html结构中于前面,通过css样式改变将其位置调到中间的前提,所以思路并不是很多。float浮动流的元素可以通过负margin调换位置;absolute绝对定位流的元素可以通过偏移属性调换位置;flex弹性盒模型可以通过order属性调换位置;grid通过grid-area调换位置。而处于正常流中的元素除了使用relative外,使用负margin是无法调换位置的,所以table、inline-block等布局方式在此前提下不是很实用。

 

转载于:https://www.cnblogs.com/xiaohuochai/p/5459587.html

你可能感兴趣的文章
糟糕的软件设计:幻想出来的问题
查看>>
openlayers入门开发系列之批量叠加zip压缩SHP图层篇
查看>>
[观点]微软报告称开源更昂贵
查看>>
gcc中的-Wl,rpath=<your_lib_dir>选项
查看>>
Javascript调用Webservice的多种方法 .
查看>>
让 linux 交互式命令行程序支持方向键等功能
查看>>
Linux 启动、关闭、重启网络服务
查看>>
[转载]定制CentOS 6.3 自动安装盘
查看>>
js生成动态的飘过效果
查看>>
Java进阶05 多线程
查看>>
SQLSERVER性能监控级别步骤
查看>>
Java使用ScriptEngine(javax.script)
查看>>
Nhibernate中 Many-To-One 中lazy="proxy" 延迟不起作用的原因
查看>>
C# COM Object for Use In JavaScript / HTML, Including Event Handling
查看>>
svn权限设置
查看>>
MVC验证11-对复杂类型使用jQuery异步验证
查看>>
C++static关键字用法
查看>>
excel在msdn上的说明文档
查看>>
指尖下的js ——多触式web前端开发之一:对于Touch的处理(转)
查看>>
visual studio 2013使用技巧
查看>>