flex 弹性布局属性(重点!!)----------1


flex布局:

描述:flex是弹性布局  用来为盒子模型提供最大的应用以及最大的灵活,任何一个容器都可以指定flex布局

语法介绍:display:flex;

表示设置当前容器为弹性盒子,此时容器内部的float。clear,,,,,样式失效

引入两个名词:容器和项目

容器:添加了display:flex的元素

项目:容器中直接子元素

接图解释:box这个样式里面设置了display:flex;那么这个盒子可以称之为容器

而里面的子元素直接包含的子元素被称为项目。

 弹性盒子样式(此篇文章我以常用样式怎么解释及讲解,快速上升了解flex布局应用,)

容器样式;justify-content;(水平排列样式)

align-items; (垂直排列方式)

flex-direction:(排列方向)

flex-wrap:(是否断行)

flex-flow:(排列方向   是否断行)前面两个样式的简写

项目样式:flex-grow(通俗来讲就是除去固定宽度所占有的比例)

................................................................

下面我将用实例讲解以上属性的应用(写在容器里面的属性值)

just-content属性定义了项目在水平轴上的对齐方式

①just-content :flex-start    flex-end   center   space-between    space-around 

当设置了flex-start之后和没设置一样,没发生变化,此属性默认,子元素从左至右依次排列     也就是左对齐

 同理  当给容器加上justify-content:flex-end之后   子元素从右至左排列,   也就是右对齐

当我们设置居中对齐显示是justify-content: center;

  设置justify-content:space-between和justify-content:space-around效果分别是这样的,

 justify-content:space-between:两端分别顶对齐  两端是贴边的。

而justify-content:space-around;所占有的比例是一样的,所以最左或者最右的边距是中间边距的一半

........................................................................

②align-items 定义在垂直方向的对齐方式(准确的说就是根据flex-direction来确定垂直的方向)

align-items:flex-start   flex-end   center  baseline  stretch

 我们先来看默认属性(没加align-items:flex-start;)

加了此属性时从上往下 开始排列,相当于时顶对齐。

同理  加了align-items:flex-end(center)就是顶对齐和中部对齐。

此盒子的父级我是给的500像素高

所以是根据高度500像素内居中或者底部对齐,

align-stretch   默认  它会填满父级的范围高度,(如下图)

   

align-items:baseline  表示基线对齐,

③ flex-direction  此属性定义了弹性盒子里面的项目排列的方向

有以下几个属性值:

flex-direction:row   (默认排列,从左至右)

flex-direction:row-reverse;从右至左

flex-direction:column; (从上至下排列)

flex-directiom:column-reverse;(从下至上排列)

下面我会对flex-direction的几个属性进行图文配置,更好的理解几个属性的作用,

flex-direction:row    弹性盒子里面的项目从左至右排列,

和默认一样从左至右排列。

flex-direction:row-reverse;弹性盒子里面的项目从右至左排列,

flex-direction:column;弹性盒子容器里面的直接项目从上至下排列。

同理 flex-direction:column-reverse;弹性盒子容器里面直接项目从下之上排列。

 ④  flex-warp(规定项目是否换行)

此属性有一下几个属性值:

flex-wrap:nowarp(默认   不换行)

flex-wrap:warp (换行 第一行在上方)

flex-warp:wrap-reverse;(换行,第一行在下方)

实例代码显示页面的样子

flex-warp:nowarp;不换行  和   flex-warp:warp:和flex-warp:warp-reverse;(换行,第一行在下方)

 扩展:为啥换行之后有间隙。

那是因为项目在排列的时候会默认根据自己大大小占等比例占容器,

当我不给项目高度的时候  页面显示后就会明白为啥会有间隙,

但是有需求会时这样的给高度的时候要在挨着显示,

要引入一个设置在容器里面的属性 align-content;(表示有超过一个轴线的情况下轴线的对齐方式)

就比如说上面例子:有两排,相当于有两个轴线

根据align-content:设置相关属性让他排列有上部挨在一起显示,底部挨在一起显示,中部显示,上部和下部贴边显示,每个项目占的左右间距相等显示。

align-content:flex-start  上部挨在一起显示。间距消失挨在一起,

align-content:flex-end  下部挨在一起显示。间距消失挨在一起,

 align-content:center  中部挨在一起显示。间距消失挨在一起,

 align-content:space-around  每根轴线所占有的上下间距一样。

 align-content:space-between  第一根轴线在上贴边   最后一根轴线下面贴边。

flex-flow:flex-direction   flex-warp

flex-flow  此属性是项目方向和换行两个属性合并的,

比如说从右至左  换行显示可以这样写:     flex-flow:row-reverse  warp;

flex-flow:row nowarp   (默认  一排上显示   不换行)

  以上全部内容 全部写在容器里面的属性

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

写在项目里面的属性

flex-grow  :1;(表示除里面固定宽度以外 设置了这个属性的项目规定占满多余的空间)

没设置之前先说明一下:容器宽度是500像素  里面的项目三个项目都是100px 说明他的宽度还有200px空闲的

 当我们给hezi2设置了flex-grow:1;它表示除固定宽度以外它一个盒子宽度将占满父级空闲的宽度  则他的宽度变为300px

他的弹性变化根据主轴来申长

比如把他的主轴设为从上往下伸长

 扩展几个项目里面的属性值

order   (排序位置)  

flex-shrink  (表示父级宽度不够时  项目的缩小比例)

flex-basis (表示父级宽度有空余空间的情况下 项目占据主轴空间大小)

flex:此属性时order flex-shrink flex-basis 的简写    它默认是   flex:0 1 auto;

align-self  表示可以覆盖align-items里面的属性值

order实例   根据之前例子  我想设置hezi3在第一个位置

设置hezi1在最后一个位置

我自己理解是  负值往前站   正值往后站   负的越多越靠前   正的越多越靠后。

    flex-shrink实例  把盒子项目宽度特意加大一点  三个项目的宽度大于父级宽度   第一个hezi1宽度不变 其它两个宽度剩余空间平均分摊

因为父级盒子500px宽 项目加起来有600px  所以默认是每个盒子166.6px

 当我需要第一个盒子为我之前写的那一个200px宽度  剩余空间300px后面两个盒子分

 flex-basis 属性  实例  还是之前盒子   项目宽度都改为100px  我想让盒子2是200px宽度

align-self 属性   实例 还是之前案例  我想让第二个盒子在底部显示

    以上是flex弹性盒子大部分相关内容。