jjw

写给自己的博客。 记录学习的点滴以备查。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

flex个人总结

Posted on 2024-06-29 12:37  jjw  阅读(9)  评论(0编辑  收藏  举报

一、尽可能设置父元素的高度(这是最简单、灵活的方式)。然后通过设置子元素的 flex-basis,flex-shrink,flex-grow分配空间,再使用justify-content, align-items. align-content进行版式控制。

二、父元素不设置高度,依靠子元素的高度来撑开。这时的问题就是无法对 交叉轴 进行控制,只能对 主轴 控制。

三、flex-basis,flex-shrink,flex-grow只能控制 主轴 的空间占比。无法控制在 交叉轴 的占比,交叉轴的占比只对子元素设置height的值。此外这三个属性受限于 max-xxx, min-xxx属性。

四、flex-basis值为百分比时,且值大于50%时,会导致子元素由单行变为多行。

五、align-self是子元素自己控制自己在 交叉轴 上的位置。用来替代父元素的align-items,(一旦子元素设置了align-self,就会替代父元素的align-items值 。

1)子元素多行时,align-self受父元素的 align-content限制,设置了也无效。

2)子元素多行时,父元素未设置align-content时,align-self可不受父元素的align-items影响,在自己被分配的空间中,在交叉轴上 flex-start(顶对齐) center(居中)flex-end(底对齐)。

 其它补充:

place-content 是  align-content 和 justify-content的简写。

place-items 是 align-items 和 justify-items(Grid)的简写。

MDN

 /* 关键字值 */
flex: auto;
flex: initial;
flex: none;

/* 单值,无单位数字:flex-grow
flex-basis 此时等于 0。 */
flex: 2;

/* 单值,宽度/高度:flex-basis */
flex: 10em;
flex: 30px;
flex: min-content;

/* 双值:flex-grow | flex-basis */
flex: 1 30px;

/* 双值:flex-grow | flex-shrink */
flex: 2 2;

/* 三值:flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;

/* 全局值 */
flex: inherit;
flex: initial;
flex: revert;
flex: revert-layer;
flex: unset;