定位类型
类型 | 相对点 | 是否托标 | 使用场景 |
relative | 自身 | 不托标,保留原来的位置 | 给绝对定位的子元素当参照点 |
absolute | 最近的带有除默认定位的上级元素 | 脱标,增加行内块元素特性 | 想设置在父盒子任意位置时 |
fixed | 浏览器可视区域 | 托标,增加行内块元素特性 | 固定在浏览器窗口,不随着滚动消失 |
sticky | 浏览器可视区域 | 一开始不托镖,当元素偏移距离达标时变成固定文定位。 | 一开始相对定位,后面固定定位 |
z-index
添加定位的元素可能发生覆盖,当没有设置z-index时同级元素后来者居上。
当指定z-index后谁的值大谁在上
定位拓展
块元素水平/垂直居中
设置定位后的元素marigin o atuo 无法实现水平居中了。
<style>
.box {
/* margin: auto; */
position: absolute;
/* 距离页面50%距离-自宽/高的一半 (因为元素通过左上角移动而不是中心点)*/
left: calc(50% - 100px);
top: calc(50% - 100px);
width: 200px;
height: 200px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
元素显示转换
添加定位的元素和浮动的元素都会具有行内块元素显示特性。
块元素如果采用的是继承的父元素宽度(没设置自己的宽度),在添加定位后会以自身内容宽度为准。
行内元素添加定位后可以自定义宽高 、垂直的margin
不会触发外边距合并的问题
浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。