Flex和Grid的学习

一.Flex布局

1.flex布局基础

(1). flex 布局含义 :  flex 布局 , 也被称之为弹性盒子布局 , 是 CSS3 里面新增的一种布局方式 , 通过使用 flex 布局 , 我们可以让布局更加便捷高效 。

(2)如何触发弹性盒子 :给父元素添加 display 属性 , 并且将取值设置成 :flex

.nav{
display : flex;
}

3. 触发弹性盒子有哪些特点 ?


1 子元素默认横向显示。


2子元素会默认变成块级元素 , 能设置宽度高度。


3 如果只有一个子元素的话 , 则给子元素添加 margin:auto 的时候
会让子元素直接实现水平垂直居中显示。

2.flex布局中的基本概念

flex容器:采用Flex布局的元素的父元素。



flex 项目:采用 flex 布局容器里面的子元素;



横轴 ( 水平轴 ): 水平方向轴线
纵轴 ( 垂直轴 ): 垂直方向轴线

主轴 : 触发弹性盒子之后 , 项目的排列方向。
侧轴 ( 交叉轴 ): 触发弹性盒子之后 , 与主轴对立的方向。


 

3.flex中的容器布局属性

1.触发弹性盒子

在默认情况下项目都是纵向排列(原因:项目是块级元素,块级本质就是纵向排列

*{
            padding: 0px;margin: 0px;
        }
        .box{
            width: 500px;
            height: 500px;
            border: 10px solid red;
            margin: 100px auto;
        }
        .box>div{
            width: 100px;
            height: 100px;
            border: 2px dashed orange; 


        }

添加 display:flex;  (给容器(父元素)触发弹性盒子) 属性后变横向 (默认横向显示)

2.修改主轴方向     

给容器(父元素)触发弹性盒子(默认主轴在横向)display:flex

 修改主轴方向:flex-direction属性    取值:column-reverse的时候,主轴在纵向,项目反方向显示(column垂直,reserve反向)

对于属性:flex-direction

                  row=========主轴在横向,以开始位置显示(*)

                  row-reserve===主轴在横向,以相反方向位置显示

                  column=======主轴在纵向,以开始位置显示(*)

                  column-reserve=主轴在纵轴,以相反方向位置显示
 

1. 

2

3

4

基本格式为:

3.主轴对齐方式(调整间距)

     给容器(父元素)触发弹性盒子(默认主轴在横向)display:flex;

      需要justify-content属性来调整主轴上面的对其方式(间距

对于属性:justify-content

                  

                   flex-start    主轴的开始位置显示,默认值(项目之间没有间距)
                   flex-end     主轴的结束位置显示(项目之间没有间距)
                   center        主轴的居中位置显示(项目之间没有间距)
                   space-between    主轴的两端对齐(space间距  between两端)
                   space-around      主轴两端环绕(around环绕-项目左右都有距离)(项目与项                                                   目之间的距离是首尾项目与容器之间距离的2倍)
                   space-evenly       主轴的间距均分(evenly代表让间距均分,首元素或末尾元素                                                 都一样)

1

2

3

4

5

6

7基本格式为:

4.侧轴上的对齐方式

给容器(父元素)触发弹性盒子(主轴在横向)display:flex;

 需要使用align-items属性用来调整项目位于交叉轴(侧轴)上面的对齐方式

  1. align-items的取值设置为flex-start,交叉轴(侧轴)的开始位置显示,默认值 
  2.                                       flex-end     交叉轴(侧轴)结束位置
  3.                                       center        交叉轴(侧轴)中间位置(*)
  4.                                       baseline     交叉轴(侧轴)的基线位置,效果与flex-start一致
  5.                                       stretch       效果为拉伸效果(前提:没有高度,或者高度是自适的)
  6. 其基本格式为

5.折行属性
      给容器(父元素)触发弹性盒子(主轴在横向)display:flex;

      子元素会横向显示,没有折行,原有宽度被挤压了    

       需要属性:flex-wrap触发

  1.        flex-wrap:nowrap   不折行,存在挤压
  2.        flex-wrap:wrap       折行显示
  3. 其基本格式为

6.多行侧轴对其

       项目过多,添加折行后,项目间有较大行间距  display:flex;flex-wrap:wrap 

       需要使用属性:align-content来设置多行之间的间距

  • flex-start    侧轴开始位置  没有行间距
  • 其基本格式为:

4.项目属性

 1.单独侧轴对其     

     项目中的单独对其方式,可以让不同元素位于不同位置

     需要使用属性:align-self来单独调整对其方式

  • align-self:flex-start;    开始位置 
  • align-self:flex-end;     结束位置
  • align-self:center;        居中位置 
  • align-self:baseline;     基线位置
  • align-self:stretch;        拉伸
2.项目调整显示顺序


  触发弹性盒子后,从左到右一次来排列

  需要使用属性:order  取值为数值

order取值可以为正数,也可为负数取值越大越靠后面

 3.剩余空间的所有

  (1)主轴在横向

       项目不设置高度,默认高度拉伸

       项目添加flex:1实现的是占剩余宽度的所有

 (2)主轴在纵向

      项目不设置宽度,默认宽度拉伸

      项目添加flex:1实现的是占剩余高度的所有

4.不挤压不折行
flex属性是一个复合属性

fflex-grow :定义项目的放大比例


flex-basis:定义在分配多余空间之前,项目占据的主轴空间


flex-shrink:定义项目的缩小比例取1挤压,取0不挤压)和overflow:auto完成横向的滚动


二.grid布局


1.grid布局的含义


 

2.如何触发网络
为父元素添加属性
display:grid;块状网络,默认独占一行,类似于块级元素
display:inline-grid;行内块网络,与行内块元素类似

flex和grid的区别

相同点:都有容器和项目之分
不同点:flex被称为一维布局,grid被称为二维布局,有行列之分

grid与表格异同
相同点:都有行列之分,能划分格子
不同点:代码嵌套


2.grid布局概念


一个m行n列的网格,需要使用m+1条横向n+1条纵向组成

 3.容器属性


 1.划分行列属性(取值纯数值)


行属性:grid-template-rows;

列属性:grid-template-columns;

(后面跟几组值,就代表几行几列,如100px就是一行)

2.划分行列属性(取值百分比)


行属性:grid-template-rows;

列属性:grid-template-columns;

(填百分比)

3.划分行列属性(重复函数)


行属性:grid-template-rows;

列属性:grid-template-columns;

重复函数:repeat(num1,num2)

参数1:重复次数;

参数2:需要重复的数值

4.划分行列属性(自动填充)

有两种情况


5.划分行列属性(auto自动)


行属性:grid-template-rows;

列属性:grid-template-columns;

(属性添加auto,高度自适应)

6.划分行列属性(fr片段划分)

行属性:grid-template-rows;

列属性:grid-template-columns;

(为了表示比例关系,属性中提供fr关键词,如果前一个宽度为1fr,后一个为2fr,表示后者是前者的两倍)

7.划分行列属性(minmax())


行属性:grid-template-rows;

列属性:grid-template-columns;

minmax(num1num2

参数一:最小值

参数二:最大值

8.调整间距属性

行间距属性:grid-row-gap

列间距属性:grid-column-gap

grid-gap:num1 num2;

参数一:行间距

参数二:列间距

9.添加项目


在容器中添加对应的div(项目),项目会默认自动撑开显示在单元格内部  ,从左到右先,排第一行,再第二行

10.调整顺序


grid-auto-flow

取值:row:横向显示

           column:纵向显示

11.项目对其方式


水平对其方式:justify-items
取值

justify-items:start;    水平方向开始位置
justify-items:center;  中间
justify-items:end;      结束
justify-items:stretch;  拉伸
垂直对其方式:align-items
取值

align-items:start;    垂直方向开始位置
align-items:center;   中间
align-items:end;        结束
align-items:stretch       拉伸
复合属性:place-items:align-items  justify-items

12.网络位于容器中的对齐方式


水平方向对齐属性:justify-content
start
center
end
垂直方向对齐属性:align-content
start
center
end
后四个与flex的一样


13.单元格合并


grid-column-start   纵向网格线开始占位

grid-column-end    纵向网格线结束占位

grid-row-start         横向网格线开始占位

grid-row-end          横向网格线结束占位

合并

grid-row:1/3;表示横向占位从第一行到第三行。

grid-column:12/18;表示纵向占位从第十二行到第十八行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值