解决absolute绝对定位带来的div穿透问题

news2025/1/19 3:02:34

首先来看症状:

 按理说蓝色和红色div应该并排同行显示,但是很明显:两个元素重叠了

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AbsoluteFloatTest</title>
    <style>
      .wrapper {
        position: relative;
        width: 100%;
        height: 200px;
        overflow: hidden;
      }

      div {     
        height: 100px;
      }
      .first {
        position: absolute;
        width: 100px;
        top: 0;
        background: blue;
      
      }

      .second {
        width: 150px;
        background: red;
        
      }

     .fl {
        float: left
     }

    </style>
</head>
<body>
    <div class="wrapper">
        <div class="first fl"></div>
        <div class="second fl"></div>
    </div>
    
</body>
</html>

再看一个例子:

同样也重叠了。

那么问题的原因到底是什么?

这里需要对absolute绝对定位有充分深度的了解。

absolute绝对定位有一个非常重要的特征: 它会使元素脱离正常文档流,并且不占据任何空间

换句话说:使用绝对定位的元素,因为释放了文档流,会导致它后面的元素,往前移动填充它所占据的空间,这就是为什么会出现前面元素重叠问题的原因

如果我们要解决这个问题,有以下两个办法:

1. 让后面的元素使用left调整位置

 但是因为这个定位是相对于根元素的最左边,需要手动计算left偏移距离,而且会造成它后面的元素也会产生重叠的问题,那么后面的每个元素都需要设置left定位属性,而且是手动计算从最左边开始的left值。这个过程相当繁琐,失去了通过div浮动实现水平排列的便利优势。

 2.  弃用absolute绝对定位,使用float或者flex来实现元素的水平排列。

 

所以一般情况下,不要轻易使用absolute绝对定位,因为它的坑实在是太大了, 它会使元素脱离正常文档流,并且不占据任何空间,使用绝对定位的元素,因为释放了文档流,会导致它后面的元素,往前移动填充它所占据的空间,从而造成元素重叠。

使用绝对定位的场景: 一般是需要子元素对父级元素做相对定位:

此时父级元素设置:position : relative

      而子元素设置: position: absolute  

      而由于子元素使用了绝对定位,那么也就是释放了文档流,此时必须使用left/right/top/bottom等属性进行定位!

 比如下面的例子:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/997524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RNN项目实战——文本输入与预测

在本篇博客文章中&#xff0c;我们将使用pytorch搭建RNN模型来生成文本。 文本输入 神经网络不像人类那样善于处理文本数据。因为绝大多数的NLP任务&#xff0c;文本数据都会先通过嵌入码&#xff08;Embedding code)&#xff0c;独热编码(One-hot encoding)等方式转为数字编码…

python DVWA命令注入POC练习

这里同样是抓包&#xff0c;访问DVWA低难度的命令注入 <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target $_REQUEST[ ip ];// Determine OS and execute the ping command.if( stristr( php_uname( s ), Windows NT ) ) {// Windows$cmd shell_exec( ping …

RHCSA-VM-Linux基础配置命令

1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性&#xff1a; [f…

浅谈OPenGL中的纹理过滤

纹理图像中的纹理单元和屏幕上的像素几乎从来不会形成一对一的对应关系。如果程序员足够细心&#xff0c;确实可以实现这个效果&#xff0c;但这需要在对几何图形进行纹理贴图时进行精心的计划&#xff0c;使出现在屏幕上的纹理单元和像素能够对齐&#xff08;实际上在用OPenGL…

项目协作软件对比分析:各大竞品的优缺点客观评析

随着科技的发展&#xff0c;越来越多的企业和团队开始使用项目协作软件来提高工作效率和协同能力。然而&#xff0c;市场上众多的项目协作软件让许多用户感到困惑&#xff0c;不知道如何选择最适合自己的工具。本文将从多个角度对目前市场上的主要项目协作软件进行客观分析&…

cesium wall (动态立体墙效果)

cesium 动态立体墙效果 以下为源码直接复制可用 实现效果 实现思路 通过修改“material”自定义材质实现动态效果 核心类(WallCorrugationsMaterialProperty )自定义材质 class WallCorrugationsMaterialProperty {constructor(options) {this

51单片机的简易计算器数码管显示仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机的简易计算器数码管显示仿真设计 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 51单片机的简易计算器数码管显示仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器…

pyqt5设置背景图片

PyQt5设置背景图片 1、打开QTDesigner 创建一个UI&#xff0c;camera.ui。 2、创建一个pictures.qrc文件 在ui文件同级目录下先创建一个pictures.txt&#xff0c;填写内容&#xff1a; <RCC><qresource prefix"media"><file>1.jpg</file>…

基于PyTorch使用LSTM实现新闻文本分类任务

本文参考 PyTorch深度学习项目实战100例 https://weibaohang.blog.csdn.net/article/details/127154284?spm1001.2014.3001.5501 文章目录 本文参考任务介绍做数据的导入 环境介绍导入必要的包介绍torchnet和keras做数据的导入给必要的参数命名加载文本数据数据前处理模型训…

《深入Flexbox和Grid:现代CSS布局的秘密武器》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

ensp综合实验

目录标题 1、网段划分2、配置所有的接口ip3、配置所有的环回4、配置全网可达5、测试是否全网通6、配置第3问中不写静态路由&#xff0c;也能访问5.5.5.07、配置PC1-PC4的IP地址自动获取DHCP8.Client可以通过DNS获取文件8、将AR5的80端口与Client进行端口映射&#xff0c;绑定为…

计算机网络中的应用层和传输层(http/tcp)

目录 1、协议的通俗理解 1.1 理解协议 2.应用层 2.1 http协议 2.2 HTTP的方法 2.3 HTTP的状态码 2.4 HTTP常见Header 3、传输层 3.1 端口号 3.1.1 端口号范围划分 3.1.2 netstat 3.1.3 认识知名端口号(Well-Know Port Number) 3.2 UDP协议 3.2.1 UDP协议端格式 3…

机器学习实战-系列教程8:SVM分类实战3非线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读

&#x1f308;&#x1f308;&#x1f308;机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 SVM分类实战1之简单SVM分类 SVM分类实战2线性SVM SVM分类实战3非线性SVM 4、非线性SVM 4.1 创建非线性数据 from sklearn.data…

动手深度学习——Windows下的环境安装流程(一步一步安装,图文并配)

目录 环境安装官网步骤图文版安装Miniconda下载包含本书全部代码的压缩包使用conda创建虚拟&#xff08;运行&#xff09;环境使用conda创建虚拟环境并安装本书需要的软件激活之前创建的环境打开Jupyter记事本 环境安装 文章参考来源&#xff1a;http://t.csdn.cn/tu8V8 官网…

基于堆叠⾃编码器的时间序列预测 深层神经网络

自适应迭代扩展卡尔曼滤波算法&#xff08;AIEK&#xff09;是一种滤波算法&#xff0c;其目的是通过迭代过程来逐渐适应不同的状态和环境&#xff0c;从而优化滤波效果。 该算法的基本思路是在每一步迭代过程中&#xff0c;根据所观测的数据和状态方程&#xff0c;对滤波器的…

【面试经典150 | 数组】移除元素

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;原地操作 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

基于YOLOv8模型和BDD数据集的自动驾驶目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型和BDD数据集的自动驾驶目标检测系统可用于日常生活中检测与定位车辆目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测…

【Spring面试】四、Bean的生命周期、循环依赖、BeanDefinition

文章目录 Q1、Bean有哪些生命周期回调方法&#xff1f;有哪几种实现方式&#xff1f;Q2、Spring在加载过程中Bean有哪几种形态Q3、解释下Spring框架中Bean的生命周期Q4、Spring是如何解决Bean的循环依赖的Q5、Spring是如何帮我们在并发下避免获取不完整的Bean的&#xff1f;Q6、…

LeetCode 729. My Calendar I【设计;有序集合,二分查找;线段树】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Single View Point Omnidirectional Camera Calibration from Planar Grids

参考论文 paper里面最关键的部分为这段 实际相当于有一个xi的参数要使用, 和正常的相机内参定义不太一样, 那么在3d往相机上投的时候, 是这样的 也参考: https://github.com/autonomousvision/kitti360Scripts/blob/master/kitti360scripts/helpers/project.py#L174-L198