CSS基础前端开发flex布局

CSS Flex布局属性整理

2017-05-18  本文已影响3003人  weqwqwqwe121312

Flex布局

注意兼容问题:

示例的dom结构:

<div class="box"> <!--容器-->
  <div class="item">1</div> <!--子项-->
  <div class="item">2</div>
  <div class="item">3</div>
</div>

基础样式设计:

.box {
  width: 200px;
  height: 200px;
  background-color: #58a;
}
.item {
  width: 50px;
  height: 50px;
  margin: 2px;
  background-color: #fb3;
}

Flex 作用于容器上的6个属性介绍

1、flex-direction

用于指定Flex主轴的方向,继而决定 Flex子项在Flex容器中的位置

取值:row | row-reverse | column | column-reverse

flex-direction四种取值的效果图如下:

row.png
column.png

2、flex-wrap

用于指定Flex子项是否换行

取值:nowrap | wrap | wrap-reverse

flex-wrap三种取值的效果图如下:

wrap.png

从示例图中不难发现,换行以后两行之间产生了很大的间距,这个问题,在后面介绍的 align-content 属性中可以得到很好的解决。

3、flex-flow

复合属性,是flex-directionflex-wrap 的简写属性,是用于指定Flex子项的排列方式

4、justify-content

用于指定主轴(水平方向)上Flex子项的对齐方式

取值:flex-start | flex-end | center | space-between | space-around

justify-content 的前三种取值的效果图如下:

normal.png

justify-content 取值为 space-between 的效果图如下(注意特殊情况下效果等同于flex-start):

space-between.png

justify-content 取值为 space-around 的效果图如下(注意特殊情况下效果等同于center):

space-around.png

5、align-items

用于指定侧轴(垂直方向)上Flex子项的对齐方式

取值:stretch | flex-start | flex-end | center | baseline

align-items 取值为 stretch 的效果图如下:

stretch.png

align-items 取值为 flex-start flex-end center 的效果图如下:

normal.png

align-items 取值为 baseline 的效果图如下:

baseline.png

6、align-content

该属性只作用于多行的情况下,用于多行的对齐方式

取值:stretch | flex-start | flex-end | center | space-between | space-around

再次强调:该属性只作用于多行的情况,在只有一行的Flex容器上无效,另外该属性可以很好的处理,换行以后相邻行之间产生的间距。

align-content 各个取值的效果图如下:

align-content.png

Flex 作用于子项上的6个属性介绍

1、order

该属性用来指定Flex子项的排列顺序,数值越小,越靠前,可以为负数

取值:数值,默认值为0

2、flex-grow

用来指定Flex子项的扩展比例,不可以为负数,Flex容器会根据Flex子项设置的扩展比例作为比率来分配剩余空间

取值:数值,默认值为0,表示即使存在剩余空间,Flex子项也不会扩展

如下图中,按照1:3分配剩余空间:

grow.png

3、flex-shrink

用来指定Flex子项的收缩比例,不可以为负数,Flex容器会根据Flex子项设置的收缩比例作为比率来收缩各个Flex子项

取值:数值,默认值为1,表示所有子项在剩余空间为负数时,等比例收缩

注意:flex-shrink只能在不换行的情况下使用

如下图中,按照1:3收缩:

shrink.png

4、flex-basis

用来指定Flex子项的占据的空间,不可以为负数

取值:auto | length | percentage | content

如下图中,为Item设置 flex-basis: 50%; ,在按照1:3分配剩余空间:

grow.png

容器宽度为200px,Item1原始宽度为50px,设置 flex-basis: 50%;后宽度变成100px,扩展后宽度为110.5px;而Item2原始宽度为50px,扩展后为81.5px,比例正好是1:3

注意:

  1. 设置flex-grow进行分配剩余空间,或者使用flex-shrink进行收缩都是在flex-basis的基础上进行的;

  2. flex-basis的值以及width(或者height)的值均为非auto时,

  1. 当width(或者height)的值为auto时,且内容的长度大于flex-basis设置的值,此时以content自身长度值为准,且不能进行flex-shrink收缩。相反如果内容的长度小于flex-basis设置的值,则会使用flex-basis设置的值;
  2. 当存在最小值 min-widthmin-height)时,且 flex-basis的值小于最小值时,宽度以最小值为准,当 flex-basis的值大于最小值时,以 flex-basis的值为准

5、flex

复合属性,是flex-growflex-shrinkflex-basis 的简写属性,用来指定Flex子项如何分配空间

取值:none | 各拆分项属性

注意:

6、align-self

用来单独指定某Flex子项的对齐方式

取值:auto | flex-start | flex-end | center | baseline | stretch

如果想了解更多关于Flex布局的内容,可以查看Flex布局应用

上一篇下一篇

猜你喜欢

热点阅读