几种定位方式
浮动
1.浮动元素会脱离标准流(起飞)
2.浮动的元素会一行内显示并且元素顶部对齐()
3.浮动的元素会具有行内块状元素的特性
特性
- 脱离标准普通流的控制浮动到指定的位置。即脱标
- 浮动的盒子不再保留原先的位置
- 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定。
- 只会影响前面的不会影响后面的
相对定位relative
- 是元素在移动位置的时候,是相对于它原来的位置来说的
- 它是相对于自己原来的位置来移动的(位置参考点是自己原来的位置)
- 原来的标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它(肉体飘了,灵魂还在),不脱标, 继续保留原来的位置
- 相对定位没有脱标,它典型的应用是给绝对定位当爹的。
绝对定位absolute
- 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准来定位,即它的父级盒子要有定位
- 如果祖先元素有定位(相对,绝对,固定),则以最近一级的有定位祖先元素为参考点移动位置
- 绝对定位不再占有原先的位置(脱标)
- 居中思路:left:50%;margin-left:盒子宽度一半;(垂直居中同理)
子绝父相的由来
子级是绝对定位,父级要用相对定位
- ①子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其它的兄弟盒子。
- ②父盒子需要加定位限制子盒子在父盒子内显示
- ③父盒子布局时,需要占有位置,因此父亲只能是相对定位
固定定位fixed
固定定位是元素固定于浏览器可视区的位置 ,即在浏览器页面滚动时元素的位置不会改变。
- 1.以浏览器的可视窗口为参照点移动元素
* 跟父元素没有任何关系
* 不随滚动条的滚动而滚动 - 2.固定定位不占有原先的位置
固定定位也是脱标的。其实固定定位也可以看作时一种特殊的绝对定位
粘性定位sticky
粘性定位可以被认为是相对定位和固定定位的混合
- 以浏览器的可视窗口为参照点移动元素(固定定位特点)
- 粘性定位占有原先的位置(相对定位特点)
- 必须添加top.right.bottom,left其中一个才有效
一般可跟页面滚动搭配使用
压住覆盖问题
- 浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)【浮动产生的初衷就是为了围绕文字,所以文本不会被遮住】
- 但是绝对定位(固定定位)会压住下面标准流所有的内容