一.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属性用来调整项目位于交叉轴(侧轴)上面的对齐方式
- align-items的取值设置为flex-start,交叉轴(侧轴)的开始位置显示,默认值
- flex-end 交叉轴(侧轴)结束位置
- center 交叉轴(侧轴)中间位置(*)
- baseline 交叉轴(侧轴)的基线位置,效果与flex-start一致
- stretch 效果为拉伸效果(前提:没有高度,或者高度是自适的)
- 其基本格式为
5.折行属性
给容器(父元素)触发弹性盒子(主轴在横向)display:flex;
子元素会横向显示,没有折行,原有宽度被挤压了
需要属性:flex-wrap触发
- flex-wrap:nowrap 不折行,存在挤压
- flex-wrap:wrap 折行显示
- 其基本格式为
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(num1,num2)
参数一:最小值
参数二:最大值
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;表示纵向占位从第十二行到第十八行。