网站首页 > 技术文章 正文
问题描述:当元素同时设置position:relative和top时,元素原本位置会出现空白。
还原代码:
/*css*/
.skyblue,.yellowgreen,.pink {
height: 60px;
background-color: skyblue;
position: relative;
}
.yellowgreen {
background-color: yellowgreen;
top: 20px;
}
.pink {
background-color: pink;
}
<!-- html-->
<div class="skyblue"></div>
<div class="yellowgreen"></div>
<div class="pink"></div>
效果:
问题原因: MDN-postion给的解释是——元素position=relative时,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。由此我们可以看出,元素position=relative时,其占用的位置就是为添加定位时的位置,如果添加定位信息,会造成原有位置留白和元素遮盖/被遮盖。
解决办法:
- 去除原有位置空白——给对应方向添加相同像素(负的)的margin,上面例子可以给.yellowgreen元素加上margin-top: -20px;,效果如下
- 防止元素遮盖/被遮盖——给与该元素(.yellowgreen元素)发生遮盖关系的元素(.pink元素)加上相同像素的margin,上面例子给.pink元素加上margin-top: 20px;效果如下
题外话:给position=relative元素添加定位属性,就是吃着碗里的还要占着锅里的,要根据自己的实际需求来。
猜你喜欢
- 2024-11-26 如何遍历DOM?
- 2024-11-26 Signature_Pad:一款强大的 JavaScript 签名神器!
- 2024-11-26 QQ音乐排序模型优化
- 2024-11-26 前端入门——css伪类和伪元素
- 2024-11-26 如何理解块级格式化上下文BFC(block formatting context)?
- 2024-11-26 CSS 中的 BFC 是什么?
- 2024-11-26 聊聊面试中的 STAR 法则和具体案例
- 2024-11-26 你可能还不知的 7 个 CSS 好用的属性
- 2024-11-26 CSS 中的滤镜 filter
- 2024-11-26 记一次 css background-position 遇到的坑
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-