CSS定位流
定位流有四个定位属性可以用:right,left,top,bottom
记住同一方向只能使用一个)
相对定位 relative
position: relative;
相对定位不脱离标准流,相对于自己以前在标准流中的位置来移动。
- 相对定位是不脱离标准流的, 会继续在标准流中占用一份空间,不利于布局界面
- 在相对定位中区分块级元素/行内元素/行内块级元素
- 相对定位占用标准流中的位置, 当给相对定位的元素设置margin/padding等属性的时会影响到标准流的布局
绝对定位 absolute
position: absolute;
- 绝对定位的元素是脱离标准流的, 不会占用标准流中的位置
- 绝对定位就是相对于body或者某个定位流中的祖先元素来定位
- 绝对定位的元素是脱离标准流的, 所以绝对定位的元素不区分块级元素/行内元素/行内块级元素
绝对定位参考点:
- 默认情况下所有的绝对定位的元素, 无论有没有祖先元素, 都会以body作为参考点
- 如果一个绝对定位的元素有祖先元素, 并且祖先元素中有定位流中的元素, 那么这个绝对定位的元素就会以定位流的祖先元素作为参考点
- 就近原则,如果一个绝对定位的元素有祖先元素, 并且祖先元素中有多个是定位流中的元素, 那么这个绝对定位的元素会以离它最近的那个定位流的祖先元素作为参考点
- 如果一个绝对定位以body作为参考点,实际上是以网页的首屏宽高度作为参考点,随着大小浏览器大小不一致,无法做到不同分辨率的适配
- 而一个绝对定位的元素会忽略祖先元素的padding