CSS关于position布局覆盖及解决方案

先来介绍一下position的定位方式

1.两个div都没定位

<div style="width: 300px;height: 300px;background-color: yellow;">
  第一层
 </div>
<div style="width: 300px;height: 300px; background-color: blue;">
 第二层
</div>

效果如下:
块级元素重启一行

2.将第一个div使用absolute定位

在第一个div中加入如下代码

position:absolute;
top:100px;

效果如下:
第一层下移覆盖
可以看出第一层生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。覆盖了第二层的div,脱离出了文档流。
(脱离文档流即是指:元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素。脱离文档流即是元素打乱了这个排列,或是从排版中拿走。)

3.将第一个盒子使用relative

在第一个div中加入如下代码:

position:relative; 
top:100px;

效果如下:
第一层下移

relative是生成相对定位的元素,相对于其正常位置进行定位
可以看出,第一个div原本的空间还是在的,它只是相对于自己原本的位置进行下移,并没有脱离文档流。但是它也是会覆盖后边的块。

4.fixed属性定位

fixed生成固定定位的元素,是相对于浏览器窗口进行定位。

<p>hello world!</p>
 <div style="width: 300px;height: 300px;background-color: yellow; position:fixed; top:10px;">
 第一层</div>
<div style="width: 300px;height: 300px; background-color: blue;">
 第二层</div>

效果如下:
会覆盖

其效果图与上边absolute一样(是absolute上层父级元素没有position:relative|absolute的情况下才一样)
测试的时候在第一层的上边加入一段文本,将第一个div下移10px,发现会遮挡文字。
说明fixed脱离文档流,会造成覆盖。




其他几个属性我就不一一细说了。
参考:DOM中关于脱离文档流的几种分析

解决方案:

1.z-index属性

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
在上层div代码中加入z-index:-1;
效果如下:
在这里插入图片描述

相当于将第一层置为底层。

2.使用文档流的特性(不会覆盖)

代码如下:

<div style="position:relative;">
 <div style="width: 300px;height: 300px;background-color: yellow;">
  第一层</div>
 <div style="width: 300px;height: 300px; background-color: blue; position: absolute;">
 第二层</div>
</div>

基本思想是,在最外层加一个div块,设置为相对定位(在文档流中)
再将第二个div设置为绝对定位(这时它的父元素变为了最外层div,再进行绝对定位)
效果如下:

需要注意的是,此时第二个div是脱离了文档流了的。

3.下层设置margin-top

虽然第一个div移动了,但它实际在文档流中的位置没有改变,只需要相对于上层div原来的位置设置自己的外边距,就可以实现消除重叠。
测试代码如下:

<div style="width: 300px;height: 300px;background-color: yellow;position: relative;top:30px;">
 第一层</div>
 <div style="width: 300px;height: 300px; background-color: blue; margin-top: 30px; ">
 第二层</div>

4.普通流

根据块级元素和行内元素,设定两张图次序。

总结:

这是昨天在练习css时遇到的问题,自己动手实验便于加深理解。利用postion可以实现布局,重叠,透明化等设计,但在具体使用时一定要分清在不在文档流中。

(其他方法,欢迎各位博友进行补充。可能有些概念没说清楚,欢迎指点)

### 回答1: HTMLCSS常遇到的问题和解决方法很多,以下是一些常见问题和对应的解决方案: 1. 元素没有居中显示:使用flex布局,并设置justify-content和align-items为center,或者将元素的position设置为absolute,再设置top、bottom、left、right为0,再设置margin为auto即可居中显示。 2. 页面加载速度慢:可以通过压缩图片大小和文件大小、减少HTTP请求、使用缓存等方式来优化页面加载速度。 3. 元素显示位置错乱:可能是由于box-sizing属性设定不当或选择器权重不够导致的,可以通过调整box-sizing属性和更改选择器的权重来解决。 4. 元素样式不生效:可能是由于样式优先级低或者CSS文件引入有误,可以使用!important提升样式优先级,或检查CSS文件引入是否正确。 5. 页面适配问题:在不同设备上,页面大小和分辨率不同,这可能导致页面适配问题,可以通过使用响应式布局、媒体查询等方式来解决。 希望这些常见问题和解决方案能够帮助您更好地开发HTMLCSS页面。 ### 回答2: HTMLCSS是网页设计和开发中必不可少的两个方向。在学习和实践过程中,不可避免地会遇到一些问题,下面给出一些常见的问题和解决方法。 一、HTML常见问题及解决方法 1. 图片无法加载:通常是图片路径问题,需要确认文件路径是否正确。 2. 标签未正确嵌套:每个标签都有其特定的嵌套规则,如果嵌套不正确,会导致布局和功能出现问题。 3. 表单验证失败:必填项未填、输入内容格式不符等均可能导致表单验证失败,需要仔细检查表单字段设置和输入内容是否符合要求。 4. 页面显示错位、错乱:这可能是由于样式冲突或样式覆盖等原因,需要检查CSS代码,尝试使用更具体的选择器或调整样式顺序来排除冲突。 5. SEO优化不足:需要注意页面标题、描述和关键字等元素,增加页面语义化标签,以及重要内容在页面中的位置等细节。 二、CSS常见问题及解决方法 1. 样式无法应用或未生效:检查选择器是否正确、样式表路径是否正确、样式名是否拼写正确等。 2. 样式重复或覆盖:需要检查CSS代码,尝试使用更具体的选择器、增加权重或重构样式代码等方式来解决。 3. 布局无法达到预期效果:布局实现过程中需要考虑盒模型、浮动、定位、清除浮动等布局原则,需要根据具体情况进行调整。 4. 响应式布局问题:需要使用媒体查询和弹性布局等技术来实现响应式布局,需要在不同设备上进行测试和调整。 5. 浏览器兼容性问题:不同浏览器对CSS属性的兼容性有差异,需要根据具体情况进行重构或添加浏览器私有前缀等解决方法。 综上所述,HTMLCSS的开发过程中,需要不断尝试和调整,才能达到最终预期效果,更好地提升用户体验和网站质量。 ### 回答3: HTMLCSS是前端开发中必不可少的两个基础技术,但是在使用过程中常常会遇到各种问题,需要找到解决方法。以下是HTMLCSS常遇到的问题和解决方法。 1.居中问题 在布局中,要对元素进行居中操作,可能遇到水平、垂直两个方向的居中问题。HTML用来划分页面结构,CSS用来控制页面样式。通常使用margin和padding属性对元素进行设置,但是对于居中问题,需要采用以下方法: • 水平居中:可以使用text-align:center属性将元素文本进行水平居中;也可以使用margin:auto和position:relative来实现元素水平居中。 • 垂直居中:可以使用display:inline-block和vertical-align:middle属性来实现元素垂直居中;如果使用绝对定位,可以设置top:50%和transform:translateY(-50%)实现元素垂直居中。 2.浮动问题 元素浮动是CSS布局中的重要方式,但是浮动也可能引起其他问题,如高度塌陷、外边距合并等问题。 • 高度塌陷:当子元素设置浮动属性时,父元素高度无法自动撑高,导致高度塌陷,可以通过以下方法解决:给父元素设置overflow:hidden属性;利用伪元素清除浮动。 • 外边距合并:元素设置margin属性时,可能会产生外边距合并问题,解决方法包括:给元素设置border、padding属性;通过触发BFC来避免外边距合并。 3.兼容性问题 不同浏览器对HTMLCSS的解析存在差异,兼容性问题也经常出现。 • CSS Hack:利用浏览器差异来进行样式设置,可解决不同浏览器的兼容性问题。 • CSS Reset:针对不同浏览器的默认样式进行重置,以减少兼容性问题。 4.响应式布局问题 随着移动设备的普及,响应式布局成为了必须考虑的问题,为此需要采用以下方法: • 使用@media查询实现响应式布局,利用媒体类型、分辨率等属性设置不同的样式表。 • 使用Flexbox布局来实现响应式布局,它是一种更直接、更简单的方式,通过设置容器属性,即可实现不同屏幕大小下的排列方式。 综上所述,HTMLCSS常见问题的解决方法包括居中问题、浮动问题、兼容性问题和响应式布局问题。需要根据具体情况采用不同的方法进行解决,避免影响整体页面的显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值