作者:杨耿

https://www.cnblogs.com/yanggeng/p/11212526.html

弹性盒子(伸缩盒)

注意,本篇会很长,非常长, 因为弹性盒子的知识点比较多

搜索 弹性盒子的属性  ctrl + F   如果觉得图太小, ctrl + +键

主要的属性有:  (主要分两部分讲, 一部分讲 设置在父元素上的属性,一部分讲 设置在子元素上的属性, 还有最后一些简单的应用)

  flex

  flex-grow

  flex-shrink

  flex-basis

  flex-direction

  flex-wrap

  align-content

  align-items

  align-self

  justify-content

  order

设置弹性盒子的属性:

  display:flex    inline-flex  (这两者的区别就是, 一个是 block   一个是 inline-block)

首先要注意的是:

  你给父元素设置了 display:flex  子元素们并不会改变成内联元素。  虽然他们的效果看起来是, 但是实际上并不会改变。该是啥,还是啥

接下来来看一下,他的效果,及属性和应用:

  首先,display: flex  是设置在 父元素上面的,设置之后, 他里面的子元素,就会变成 弹性盒子了。(有些人,把父元素叫做盒子,把里面的子元素叫做 项目)

接下来,几个属性, 都是设置在 父元素上面的:↓

  flex: direction

设置主轴的方向。默认的主轴是 横向 的,从左到右排列,另一条轴叫做 交叉轴,  也就是我们理解的纵向,

参数:

  row:默认值,主轴横向的,从左向右排列

  row-reverse:主轴还是横向的,只是里面项目的 排列方式不一样, 是从右向左的。

  column:把主轴变成 纵向的,排列方式 也就变成了,从上向下

  column-reverse:主轴变成 纵向的,排列方式颠倒, 从下向上排列。

  flex-wrap:设置,子元素溢出,是否换行。

参数:

  nowrap:默认值(也就是不换行。子元素如果的宽  大于父元素的,会压缩子元素)  把所有子元素排列在一行

  wrap:子元素溢出,会换行,变成多行的形式

  wrap-reverse:颠倒 wrap 的排列方式 (也会变成多行的形式)

  justify-content:

设置横轴(横向)的对齐方式

参数:

  flex-start:默认值 对齐起始位置,第一个子元素的起始位置,然后其他子元素向它看齐

  flex-end:跟上面相反的,也就是说,人家对齐在开始,这个对齐在 最后面

  center:居中对齐

  space-between:如果有多余的空间,就会平均分布,每个子元素的 两边空白空间保持一致(头尾的子元素贴边)

  space-around:如果有多余的空间,就会平均分布,每个子元素的 两边空白空间保持一致(头尾的子元素不会贴边)

  align-items: 

设置(纵轴)纵向的对齐方式:(单行)

参数:

   flex-start:默认值 对齐起始位置

  flex-end:跟上面相反的,也就是说,人家对齐在起始位置,这个对齐在 最下面

  center:居中对齐

  baseline:   基线对齐

  stretch:   如果没有设置子元素高度,那么全部子元素的高度都会被拉伸

既然学了纵向 和  横向的对齐方式, 那么现在就用他来设置 一下,我们平常的 居中功能

我们平常设置居中, 是不是要设置 position:然后就left  calc  50% - 去子元素的 宽一半,  然后再去计算 top?  很麻烦对吧。

看看以下的方法,是不是简单了许多

  align-content:

align-content 跟上面的 align-items 的区别就是,一个是操作单行的,一个是操作多行的。  参数都是一样的设置, 除了多了两个 space-betwwen  ,space-around

设置纵向的对齐方式(多行)

参数:

  flex-start:

  flex-end:

  center:

  space-betwwen

  space-around

  stretch

接下来的几个属性,都是设置在 子元素上的

   align-self:

单独设置对齐方式。如果父元素有设置 align-items的话, 会被子元素给替代掉,也就是,align-self 和 align-items同时设置, 会采用子元素的align-self 对齐方式

但是,如果是  align-self 和 align-content 同时设置, 会采用 父元素的 align-content的 对齐方式

参数:

  auto:默认值,也就是遵从 父元素 align-items 的对齐方式。

  flex-start:对齐起始位置

  flex-end:跟上面相反的,也就是说,人家对齐在起始位置,这个对齐在 最下面

  center:居中对齐

  baseline:   基线对齐

  stretch:   如果没有设置子元素高度,那么全部子元素的高度都会被拉伸

  order:

设置数值,来决定他们的排列顺序

参数:

  0:默认值

  数值越小,越靠前  支持负数(-1)

  flex-grow:

设置数值来 自定义 扩展的比例,(不支持负值)

参数:

  默认值:0 (也就是,不用扩展)

  flex-shrink: (flex-shrink的真实计算公式)

设置子元素们的宽加起来大于 父元素宽时,要怎么压缩 成一行,

参数:

  1:默认值(超出的话,就按照 比例1 压缩)

学了上面的那个 grow之后, 是不是觉得,他的计算公式那么简单, 那么跟他对应的 shrink 计算公式也一样?其实不是的,他的计算公式,有点冷门,乃至于w3c 都没有公式,那么多他的计算公式怎么样呢?看下面的例子吧~

 还有最后一点,这也是最冷门的知识点。flex-shrink 参与计算的不是盒子的宽, 而是内容区的宽, border 和  padding 都不用加进去计算的。只计算content

  flex-basis:(如果使用了flex-direction 改变了主轴的方向,那么他控制的,就变成了高度。不是宽度,也就是说,横向控制宽度,纵向控制高度)

如果这个属性呢, flex-basis: 100px  你这样设置,他跟 width: 100px的效果是一样的。

其实把,flex-basis 和 width 两个一起设置,是有用意的。flex-basis 是决定了 元素宽度的 最小值, width,是决定了元素宽度可撑开的 最大值。

还有最后的一个值:

  flex:

他是 flex-grow  flex-shrink flex-basis 的缩写形式

  flex:1  1  20%;

代表的是,可以伸缩,该元素的最小宽度是 20%。

我们来利用,今天的全部内容来实现几个案例。

  第一个:居中

    第二个:几等分。

  第三个:其中一个固定宽度的布局

  第四个:浮动

有人可能会问, float 不好吗?  emmm 确实不好, 因为 父级会受浮动流的影响,而且会触发bfc 等等。

  第五个: 圣杯布局

精彩推荐

  • Java学习路线图!!!

  • Java1234 VIP特价!!!

  • 锋哥带你java从入门到上班!!!

长按关注锋哥微信公众号,非常感谢;

ul弹性怎么一行显示_css3系列之弹性盒子 flex相关推荐

  1. html弹性布局两盒,CSS中的弹性盒子总结

    事实上它是一种新类型的盒子模型,也有书上称作弹性伸缩盒布局. 比较新的布局方式:旨在提供一个更加有效的方式来布置,对齐和分布在容器之间的各项内容,即使它们的大小是未知或者动态变化的. 弹性布局的主要思 ...

  2. html一行显示四个图片,css一行显示之:实现多个图片一行显示的方法

    在前面的几篇文章当中,我们一起学习了在css中怎么让文字在一行显示以及文字在一行显示时超出部分自动隐藏,今天我们来一起学习一下在css中如何让多张图片在一行显示,以帮助我们在网页制作中更加的随心所欲. ...

  3. flex布局常用布局方式(一行显示固定个数,自动换行显示)

    一行显示固定个数,自动换行显示 基于uni-app实现一行显示固定个数的元素,元素可以遍历生成的,并且自动换行显示,效果如下图所示 代码实现: <template><view cla ...

  4. ie6 ie7下,Li不能自动换行,出现竖排文字现象(PS:li不固定宽度,所有li同一行显示),在ie8却可以...

    好久没写CSS,今天又发现一个ie兼容问题. 我需要所有的li在同一行显示,不固定Li的宽度,如果一行排不下,需要自动换行.当然Li的内容长度不同. 必须在li加white-space:nowrap; ...

  5. CSS列表(有序,无序,去掉无序列表的点,列表一行显示)

    CSS列表 有序列表 无序列表 无序列表去掉点 成行显示 有序列表 有序列表顾名思义就是会对列表排序 例如这样↓ 1.第一句 2.第二句 3.第三句 <ol><li>第一句&l ...

  6. flex布局遇到white-space:nowrap怎么超出一行显示省略号

    一.场景: 二.简化场景: 三.页面布局: <ul class="g-list"><li class="g-list-item">< ...

  7. html怎么设置只显示一行,如何利用CSS控制文本只在一行显示(不换行)

    我们在做前端时,经常会要求文字只在一行显示.当一行文字超过DIV或者Table的宽度的时候,浏览器中默认是让它换行显示的,如果不想让他换行要怎么办呢?通过CSS中的word-break,white-s ...

  8. 8SimpleAdapter:一行显示的数据有图标

    SimpleAdapter:一行显示的数据有图标,文本等信息. SimpleAdapter(Context context, List<? extends Map<String, ?> ...

  9. CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...

    对于text-overflow:ellipsis,文本超出部分显示...,但要实现这个效果,却有一些必备条件,如下: div{overflow:hidden;white-space:nowrap;te ...

最新文章

  1. 获得服务器硬件信息(CPUID、硬盘号、主板序列号、IP地址等)
  2. ajax实现php验证码验证码,PHP验证码之Ajax验证实现方法_PHP教程
  3. python堆排序求topn_堆排序和topN算法
  4. 神策数据 App 可视化全埋点 2.0 重磅升级!抢先体验
  5. python pip国内源
  6. mime类型是什么 node_Node.js - 文件系统获取文件类型
  7. linux hive mysql_Linux下的Hive与Mysql安装
  8. 极光推送 请检查参数合法性_极光小课堂 | 极光推送在人脸识别终端管理系统中的应用...
  9. A股开盘:深证区块链50指数涨0.93%,苏宁易购涨停
  10. 朝鲜国家黑客被指利用 LinkedIn 攻击欧洲航空公司和军队企业
  11. Kernel Trick——核机制,更高维空间内积的快速计算
  12. Java 并发 —— volatile 关键字
  13. MySQL常用系统表
  14. 服务器网络修复工具,常用LSP修复工具盘点 让你轻轻松松上网
  15. 【四足机器人--支撑相足端反作用力预测】(5)ConvexMPCLocomotion代码解析
  16. 继电器互锁功能的实现
  17. mysql怎么给时间段分组_mysql自定义时间段分组
  18. 关于添加 HKEY_LOCAL_MACHINE32\Software 注册表问题
  19. 口令破解(web安全入门07)
  20. iOS之苹果和百度地图的使用

热门文章

  1. 深入理解javascript原型和闭包(16)——完结
  2. Java基础之扩展GUI——添加状态栏(Sketcher 1 with a status bar)
  3. Java实践(四)——数组
  4. 为ASP.NET MVC扩展异步Action功能(下)
  5. 各国市场分析(捷克,印度)
  6. 【独家】不懂逻辑怎么做PM,最详细产品逻辑课堂资料大公开!
  7. mysql之数据库主从复制配置报错1677
  8. 在指定位置上方出现通用jquery悬浮提示框插件全站通用
  9. # iOS 一窥并发编程底层(一)
  10. 双缓冲法解决重绘和闪屏问题