CSS文档流
display: inline;设置元素为内联元素display: block;设置元素为块级元素display: inline-block;设置元素为块级-内联元素
1. 流动方向
inline元素从左到右,到达最右边会裂开换行block元素从上到下,每一个都是另起一行inline-block从左到右,但不会裂开换行
2. 宽度
inline不能用width 指定宽度,宽度为内部 linline 元素的和block可用width指定宽度,默认自动计算宽度(width="auto",不是width="100%")inline-block可以width指定宽度,结合两者,默认宽度和inline一样
3. 高度
inline高度由line-height(行高)间接决定,跟height无关block高度由内部文档流元素决定,可用height指定高度inline-block和block类似,可以设置高度
3.溢出
overflow 来设置是否显示滚动条
overflow: auto;灵活设置,溢出就显示,否则就不显示overflow: scroll;永远显示滚动条overflow: hidden;隐藏溢出的部分overflow: visible;显示溢出的部分overflow-x和overflow-y指定X、Y轴滚动条
CSS盒模型
盒模型种类
content-box内容盒模型border-box边框盒模型
两者区别:
content-box的宽度只包含content(内容)border-box的宽度包含到border以内,border内部有内边距和内容content-box= content(内容)宽度border-box= content+padding+border
margin合并
- 父子 margin会合并
- 兄弟 margin会合并 阻止父子合并:
- padding/border
overflow:hidden阻止兄弟合并:display: inline-block;
CSS布局
float布局
- 子元素加上
float:left和width - 在父元素上加
.clearfix
.clearfix:after{
content:'';
display: block;
clear:both;
}
flex布局
container容器,加在父元素上item项目,加在子元素上
container样式
display: flex;将容器变成flex容器display: inline-flex和inline-block类似
1. 流动方向
flex-direction: column;从上往下flex-direction: column-reverse;从下往上flex-direction: row;默认值,从左往右flex-direction: row-reverse从右往左
2. 折行
flex-wrap: nowrap;默认值,不折行flex-wrap: wrap;折行flex-wrap: wrap-reverse;从下往上折行
3. 主轴对齐方式
justify-content: start;默认值,往左靠justify-content: end;往右靠justify-content: center;居中justify-content: space-between;两边靠边,中间居中justify-content: space-around;包围式justify-content: space-evenly;包围式,每个间隙相同
4. 次轴对齐方式
align-items: stretch;默认,拉伸成一样高align-items: flex-start;向上靠align-items: flex-end;向下靠align-items: center;居中
5. 多行内容
align-content: stretch;默认,平均伸展开align-content: flex-start;向上靠align-content: flex-end;向下靠align-content: center;居中align-content: space-between;两边靠边,中间居中align-content: space-around;包围式
items样式
order排列顺序,默认是0,给数字后从小到大排序flex-grow变胖,分配多余的空间,默认是0flex-shrink变瘦,默认是1,flex-shrink:0;防止变瘦flex-basis控制基准宽度,默认是autoalign-self定制align-items,可以让单独一个向下对齐
grid布局
container容器,加在父元素上item项目,加在子元素上display: grid;将容器变成grid容器display: inline-grid
区域划分一
划分网格
grid-template-rows: 60px 300px 100px; 行,分为3行,以及每一行的高度
grid-template-columns: 40px auto 50px 40px; 列,分为4列,以及每一列的宽度
fr 自由空间
grid-template-rows: 1fr fr;
grid-template-columns: 1fr 1fr 1fr; 分为2行,3列
按线去划分
grid-row-start: 1;
grid-row-end:2 ; 行的第一根线到第二根线
grid-column-start: 1;
grid-column-end: 6; 列的第一根线到第六根线
宽高
grid-template-rows: 60px auto 60px;设置每一行的高度grid-template-columns: 100px auto 100px;设置每一列的宽度rid-gap: 12px;格子之间的间隙grid-row-gap: 10px;设置每行之间的间隙grid-column-gap: 10px;设置每列之间的间隙
区域划分二
grid-template-areas:
"header header header"
"aside main ad"
"footer footer footer"
grid-area 告诉元素你是哪个区域
例子:
.container{
display: grid;
width: 600px;
height:700px;
grid-template-rows: 100px auto 100px;
grid-template-columns: 100px auto 100px;
grid-template-areas:
"header header header"
"aside main ad"
"footer footer footer"
}
header{
border: 1px solid red;
grid-area: header;
}
aside{
border: 1px solid red;
grid-area: aside;
}
main{
border: 1px solid red;
grid-area: main;
}
.ad{
border: 1px solid red;
grid-area: ad;
}
footer{
border: 1px solid red;
grid-area: footer;
}
CSS定位
-
position:static;默认值,待在文档流里 -
position:relative;相对定位,升起来,但不脱离文档流- 用于做位移
- 用于给absolute 元素做爸爸
- 配合z-index使用,默认值是auto
-
position:absolute绝对定位,定位基准是祖先里的非static,所以父辈需要position:relative;- 用于对话框的关闭按钮
- 用于鼠标提示
-
position:fixed固定定位,定位基准是viewport -
position:sticky粘滞定位
CSS动画
浏览器渲染原理
- 根据HTML构建HTML树
- 根据CSS构建CSS属
- 将两颗树合并成一颗渲染树
- Layout 布局(文档流、盒模型、计算大小和位置)
- Paint 绘制(边框颜色、文字颜色、阴影等)
- COmpose 合成(根据层叠关系展示画面)
transform 变形
1. 位移 translate
transform: translateX();X轴移动transform: translateY();Y轴移动transform: translateZ();Z轴移动transform: translate(x,y);X轴、Y轴transform: translate3d(x,y,z);X轴、Y轴、Z轴
2. 缩放 scale
transform: scale();transform: scaleX(2);X轴缩放transform: scaleY(0.5);Y轴缩放
3. 旋转 rotate
transform: rotate()transform: rotateX(10deg);根据X轴旋转transform: rotateY(10deg);根据Y轴旋转transform: rotateZ(10deg);根据Z轴旋转
4. 倾斜 skew
transform: skew();transform: skewX();X轴倾斜transform: skewY();Y轴倾斜
transition 过渡
作用:补充中间帧
- transition: 属性名 时长 过渡方式 延迟;
transition: width 300ms linear 1s;transition: all 300ms ease-in 200ms;
animation 动画
设计动画
@keyframes heart{
0%{
transform: scale(1); /* 正常大小 */
}
100%{
transform: scale(1.2); /* 变大1.2 */
}
}
animation 中的属性
animation: xxx 3s linear infinite alternate running;
- 时长: 1s 或 200ms
- 过渡方式: 跟transition一样,如 linear
- 次数:3 或 2.4 或 infinite(无限次)
- 方向:
- reverse 反方向
- alternate 先正方向过去再原路返回
- alternate-reverse 先反方向过去再原路返回
- 填充模式:
- none
- forwards
- backwards
- both
- 是否暂停
- paused 暂停
- running 运行