定位
定位模式分类:
定位模式 | 是否脱标 | 移动位置 | 是否常用 |
---|---|---|---|
static 相对定位 | 否 | 不能使用边偏移 | 很少 |
relative 绝对定位 | 否(占有位置) | 相对于自身位置移动 | 常用 |
absolute 绝对定位 | 是(不占有位置) | 带有定位的父级 | 常用 |
fixed 固定定位 | 是(不占有位置) | 浏览器可视区 | 常用 |
sticky 粘性定位 | 否(占有位置) | 浏览器可视区 | 比较少 |
P.S:相对定位和粘性定位都会占用原来的位置,如下图:
相对定位和绝对定位的使用技巧:采用 子绝父相 的定位方法
子绝父相:在父盒子内有子盒子时,子盒子通常会以他的最近一级的父亲为准定位
父盒子只需要加上相对/绝对定位即可.否则子盒子会以浏览器为准进行定位
固定定位的使用技巧:
如果需要将盒子和靠版心盒子固定对齐,则需要按照 公式 使用定位:
定位算法:左/右移动50%到版心,再使用margin移动版心的1/2的距离即可
例如 left:50%; margin 100px;
相对定位和绝对定位的代码表示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 相对定位会占有原来的位置,所以父级通常使用相对定位 */
.father {
width: 300px;
height: 300px;
background-color: skyblue;
position: relative;
/* 如果此处使用绝对定位,则会脱标,下方红色模块会填补上面的空白 */
/* position: absolute; */
top: 100px;
left: 100px;
}
/* 绝对定位是不会占用原来的位置的,和浮动是类似的,但是区别于浮动,不影响其他位置的布局 */
.son {
width: 100px;
height: 100px;
background-color: pink;
/*子绝父相*/
position: absolute;
top: 10px;
left: 10px;
}
.other {
width: 300px;
height: 300px;
background-color: red;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
<div class="other"></div>
</body>
</html>