博客
关于我
你不应该只知道flex布局
阅读量:215 次
发布时间:2019-02-28

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

前言

我可以说是长沙前端群最闲的人了,加了很多个长沙不收费的前端群,即能够吸取别人出现的问题和解决方案来扩充自己知识,同时也能够在帮助解决别人问题上尽自己一份薄力。见过几次问布局的,而群里齐刷刷的都回答flex布局,没有任何一个其他的布局,不知道是确实只知道flex布局还是知道其他的布局懒的说。 诚然,flex布局真的很好用,但是我们也应该要了解了解其他方面的布局。本文仅简述除flex外其他两种少见的布局和基本使用方法。

flex

面试前不是很自信的前端都会找一些面试题来为自己充充电,其中一个相当经典的问题就是垂直居中问题。百度一下很多答案,最常见的几个答案无非就是负margin,transform,设置成行内元素然后lineHeight,flex等等。不知道大家发现没有,这些方法中不是需要知道子容器的宽高(负margin,transform)就是不能真正意义上的垂直(设置lineHeight),常见垂直居中布局中只有flex既不需要关心父容器的宽高又不需要关心子容器的宽高就能垂直居中了,这确实很惊艳而且代码量很少,同时flex还有其他很多很高效的用法,深得我们前端喜爱。但是,我说但是了,这基本上是深得移动端的开发的喜爱。作为常年开发PC端的我来说并不是经常使用flex,flex只兼容ie10以上的浏览器(最大痛点),而且老版的flex的写法还不一样,一会儿display:box,一会儿display:flex,还要做兼容处理。有没有其他布局既能够有flex布局的基本能力有能兼容老浏览器呢?有!

table

display:table这个table布局就厉害了(用法涉及到很多api,请自行百度)。首先很久很久以前能用table布局,兼容性是ie8及以上,ie8往下现在的份额应该可以忽略不计了吧,其次就是table布局下对容器宽高变化敏感,简单点说就是具有弹性,响应padding属性内容溢出时会自动撑开父元素,几乎具有flex的基本功能(毕竟年代久远,不可能做到比flex还优秀),下面就来几个实例

  • ,如同flex一般丝滑
  • ,两栏布局可以同时参考
  • ,适合数据如table展示的场景
  • ,适合公司官网展现

以上应该是最常见的几种table布局了。缺点也很明显,使用table了,那么它的容器下的横向排列总会是等高的,这就相当尴尬了。还有就是很多api还需要结合html的table标签进行理解,比较费时。也许这也是它不能够好好流行下去的原因吧。

grid

display:grid我复制一段阮一峰大佬的原话:Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。,有多牛掰我就不多说了,api实在太多了,我来稍微总结一下:

  • 整体布局样式: grid-template-columns grid-template-rows,决定了整个grid布局横纵的网格数和对应比例。
  • 布局间隔:grid-row-gap,grid-column-gap,grid-gap,这三个属性其实就是决定了看不见的网格边线的宽度。
  • 布局流向:grid-auto-flow。默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"。和flex的流向的概念差不多。
  • 对齐属性:justify-items,align-items,place-items,justify-content,align-content,place-content。items结尾的就是对单元格内的元素进行对齐排列组合,content结尾的就是对grid内所有网格作为一个整体的对齐排列组合。这里属性很多很复杂,是一个学习难点
  • 重点-网格item的属性:grid-column-start:左边框所在的垂直网格线。grid-column-end:右边框所在的垂直网格线。grid-row-start:上边框所在的水平网格线。grid-row-end:下边框所在的水平网格线。注意,最左边或最上边的网格线编号为1而不是0。有了这几个属性,就可以在网格内任务排列自己想要的布局。
  • 流动性:grid-auto-flow: row dense;column dense,自动填充网格。可以在例子中去掉属性看效果

下面是几种常见的用法:

  • 垂直居中
  • 圣杯布局
  • 响应式布局
  • 常见用法

grid布局基本上可以用来做任何的布局,缺点也很明显,就是兼容性。

float 和 absolute

这两种布局也是最最常用的了,但是面对布局问题,似乎很多人不会第一想到这两个最强兼容性最普遍使用的布局。

总结

对一个页面进行布局往往是一个伪命题,你可以通过各种各样的css搭配来实现你的目的。作为最流行的flex确实受到了很多人的重用,但是严谨的前端工程师,我们应该在布局前慎重考虑后再选择自己的布局方法和手段,毕竟flex不是万能的。

(想自学习编程的小伙伴请搜索,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

转载地址:http://wlbp.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>