★文章内容学习来源:拉勾教育大前端就业集训营
我们已经了解过布局相关的盒模型、浮动等属性,而定位是另一种布局的重要属性,常用于制作压盖或者位置相关的效果。
本篇•定位属性介绍• 相对定位 • 绝对定位 • 固定定位
下篇 • 定位应用 • 压盖顺序
一、定位属性介绍
定位属性 | 具体含义 |
---|---|
属性名 | position |
属性值 | relative 相对定位 |
absolute 绝对定位 | |
fixed 固定定位 | |
作用 | 设置定位的元素,它需要根据某个参考元素发生位置的偏移 |
偏移量属性 | 定位的元素要想发生位置的移动,必须搭配偏移量属性进行设置 |
---|---|
水平方向:left、right | |
垂直方向:top、bottom | |
属性值 | 常用 px 为单位的数值,或者百分比 |
二、相对定位
1.含义
- 属性值:relative,相对的意思。
- 参考元素:标签加载的原始位置。
- 必须搭配偏移量属性才能发生位置移动。
position: relative;
left: 100px;
top: 100px;
2.性质
- 性质:相对定位的元素不脱离标签的原始状态(标准流、浮动)*,不会让出原来占有的位置。 元素显示效果上,原位留坑,形影分离。
3. 注意事项
注意①:偏移量属性的值是区分正负的
- 正数:表示偏移方向与属性名方向相反。
- 负数:表示偏移方向与属性名方向相同。
position: relative;
left: 100px; /*向右移50px*/
top: 100px;/*向下移100px*/
position: relative;
left: ‐50px; /*向左移50px*/
top: ‐100px;/*向上移100px*/
注意②:同一个方向,不能设置两个偏移量属性
- 如果水平方向同时设置了 left 和 right 属性,只会加载 left 属性。垂直方向只加载 top 属性。
- 建议:书写时从水平方向和垂直方向各挑一个属性进行组合。
position: relative;
left: ‐50px; /*只会加载 left 属性*/
top: ‐100px; /*只加载 top 属性*/
right: ‐50px;
bottom: ‐50px;
注意③: 为了方便记忆,可以选择只使用 left、top 组合
由于相对定位的参考元素是自身,left 的正值等价于 right 的负值,top 的 正值等价于 bottom 的负值。
position: relative;
right: ‐50px;
bottom: ‐50px;
position: relative;
left: 50px;
top: 50px;
4.实际应用
- 由于相对定位元素比较稳定,不会随意让出位置,可以将相对定位的元素作为后期绝对定位的参考元素,就是所说的子绝父相情况。
- 相对定位比较稳定,可以在占有原始位置的情况下,对加载效果区域进行位置调整,进行微调设置。或者对文字进行微调。
三、绝对定位
1.含义
- 属性值:absolute,绝对的意思。
- 参考元素:参考的是距离最近的有定位的祖先元素,如果祖先都没有定位,参考
<body>
。 - 必须搭配偏移量属性才会发生位置移动。
position: absolute;
left: 50px;
top: 50px;
2.性质
- 绝对定位的元素脱离标准流,会让出标准流位置,可以设置宽高,也可以随时定义位置,绝对定位的元素不设置宽高只能被内容撑开。
3.注意事项
- 注意①:绝对定位的参考元素是不固定的,不同的参考元素以及不同的偏移量组合, 会导致绝对定位元素的参考点不同,具***移效果不同。
- 注意②:在绝对定位中,由于参考点不同,left 正值不再等价于 right 的负值。
- 注意③: 以
<body>
为参考元素时,参考点的确定与偏移量方向有关。
**** 如果有 top 参与的定位,参考点就是<body>
页面的左上顶点和右上顶点。自身的对比点是盒子的所有盒模型属性最外面的左上角或右上角。
**** 如果有 bottom 参与的绝对定位,参考点是<body>
页面首屏的左下顶点或右下顶点。对比点是盒子的所有盒模型属性最外面的左下角或右下角。
实际应用中,如果以
<body>
为参考元素,不同分辨率的浏览器中,绝对定位的元素位置是不同的,所以较少使用<body>
作为参考元素。
- 注意④:以祖先级为参考元素(如果祖先级中有定位的元素,就不会去参考
<body>
)
*** 参考元素:参考的是祖先元素中有任意定位的,在 HTML 结构中距离目标最近的祖先。
4. 三种定位组合方式
(1)根据绝对定位的参考元素的定位类型不同:
①子绝父相,子元素绝对定位,父元素相对定位。
②子绝父绝,子元素绝对定位,父元素绝对定位。
③子绝父固,子元素绝对定位,父元素固定定位。
由于相对定位的祖先级位置更稳定,大多使用子绝父相的情况
(2)祖先元素参考点
如果绝对定位的参考元素是某个祖先级,参考点是盒子 border 以内的四个顶点,组合方向决定了参考点。绝对定位的元素只关心对比点和参考点之间的距离,会忽视参考元素的 padding 区域。
- left、top:参考点是祖先的 border 以内的左上顶点,对比点是盒子自身的左上角。
- right、top:参考点是祖先的 border 以内的右上顶点,对比点是盒子自身的右上角。
- left、bottom:参考点是祖先的 border 以内的左下顶点,对比点是盒子自身的左下角。
- right、bottom:参考点是祖先的 border 以内的右下顶点,对比点是盒子自身的右 下角。
四、固定定位
1.含义
- 属性值:fixed,固定的意思。
- 参考元素:浏览器窗口。
- 参考点:浏览器窗口的四个顶点。跟偏移量组合方向有关。 由于浏览器窗口的四个顶点位置不会发生变化,会导致固定定位的元素会始终显示在定位位置。
.backtop {
position: fixed;
width: 100px;
height: 50px;
right: 50px;
bottom: 50px;
background‐color: #ccc;
font: bold 20px/50px "Arial";
text‐align: center;
color: #333;
text‐decoration: none;
}
2.性质
- 固定定位的元素脱离标准流,让出标准流位置,可以设置宽高,根据偏移量属性可以任意设置在浏览器窗口的位置。
- 固定定位的元素会始终显示在浏览器窗口上
下篇继续:【33】CSS核心样式(9)——定位属性(下)