基本介绍
网页常见布局方式
1. 标准流
1. 块级元素独占一行 → 垂直布局
2. 行内元素/行内块元素一行显示多个 → 水平布局
2. 浮动
1. 可以让原本垂直布局的 块级元素变成水平布局
3. 定位
1. 可以让元素自由的摆放在网页的任意位置
2. 一般用于 盒子之间的层叠情况
定位的常见应用场景
1. 可以解决盒子与盒子之间的层叠问题
定位之后的元素层级最高,可以层叠在其他盒子上面
2. 可以让盒子始终固定在屏幕中的某个位置
使用定位的步骤
1. 设置定位方式
➢ 属性名:position
➢ 常见属性值:
2. 设置偏移值
➢ 偏移值设置分为两个方向,水平和垂直方向各选一个使用即可
➢
选取的原则一般是就近原则 (离哪边近用哪个)
静态定位
介绍:静态定位是默认值,就是之前认识的标准流。
代码:position: static;
注意点:
1. 静态定位就是之前标准流,不能通过方位属性进行移动
2. 之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定
相对定位
介绍:自恋型定位,相对于自己之前的位置进行移动
代码:position: relative;
特点:
1. 需要配合方位属性实现移动
2. 相对于自己原来位置进行移动
3. 在页面中占位置 → 没有脱标
应用场景:
1. 配合绝对定位组CP(子绝父相)
2. 用于小范围的移动
绝对定位
介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动
代码:position: absolute;
特点:
1. 需要配合方位属性实现移动
2. 默认相对于浏览器可视区域进行移动
3. 在页面中不占位置 → 已经脱标
应用场景:
1. 配合绝对定位组CP(子绝父相)
绝对定位到底相对于谁进行偏移
1. 祖先元素中没有定位 → 默认相对于浏览器进行移动
2. 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动
固定定位
介绍:死心眼型定位,相对于浏览器进行定位移动
代码: position: fixed;
特点:
1. 需要配合方位属性实现移动
2. 相对于浏览器可视区域进行移动
3. 在页面中不占位置 → 已经脱标
应用场景:
1. 让盒子固定在屏幕中的某个位置
子绝父相介绍
场景:让子元素相对于父元素进行自由移动
含义:
子元素:绝对定位
父元素:相对定位
子绝父相好处:
父元素是相对定位,则对网页布局影响最小
子绝父绝特殊场景
场景:在使用子绝父相的时候,发现父元素已经有绝对定位了,此时直接子绝即可!
原因:
父元素已经有定位已经满足要求,如果盲目修改父元素定位方式,可能会影响之前写好的布局
子绝父相水平居中案例
需求:使用子绝父相,让子盒子在父盒子中水平居中(父子元素任意宽度下都能实现)
子绝父相水平居中案例-解决方法
1. 子绝父相
2. 先让子盒子往右移动父盒子的一半
left:50%
3. 再让子盒子往左移动自己的一半
普通做法:margin-left:负的子盒子宽度的一半
缺点:子盒子宽度变化后需要重新改代码
优化做法:transform:translateX(-50%)
优点:表示沿着X轴负方向(往左)始终移动自己宽度的一半,子盒子宽度变化不需要更改代码
子绝父相水平垂直都居中案例
需求:使用子绝父相,让子盒子在父盒子中水平垂直都居中(父子元素任意宽高下都能实现)
子绝父相水平垂直都居中案例-解决方法
1. 子绝父相
2. 让子盒子往右走大盒子一半
left:50%
3. 让子盒子往下走大盒子一半
top:50%
4. 让子盒子往左+往上走自己的一半
transform:translate(-50%,-50%);
元素层级问题
不同布局方式元素的层级关系:
标准流 < 浮动 < 定位
不同定位之间的层级关系:
相对、绝对、固定默认层级相同
此时HTML中写在下面的元素层级更高,会覆盖上面的元素
更改定位元素的层级
场景:改变定位元素的层级
属性名:z-index
属性值:数字
数字越大,层级越高