如何获取元素在父级div里的位置_关于元素的浮动你了解多少

首先,在介绍什么是浮动之前我们先介绍一下html中元素的普通流布局方式。在普通流中,元素是按照它在 HTML 中的出现的先后顺序自上而下依次排列布局的,在排列过程中所有的行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为一整行。如果没有特殊样式指定,所有元素默认都是按照普通流方式排列布局,即普通流中元素的位置由该元素在 HTML 文档中的位置决定的。什么是浮动?      浮动使元素脱离文档普通流,漂浮在普通流之上的。浮动元素依然按照其在普通流的位置上出现,然后尽可能的根据设置的浮动方向向左或者向右浮动,直到浮动元素的外边缘遇到包含框或者另一个浮动元素为止,且允许文本和内联元素环绕它。浮动会产生块级框(相当于设置display:block属性)。

       正是因为这种浮动的这种特性,所以本该属于普通流中的元素浮动之后,父级元素的高度就可能会发生变化(父级元素内部由于不存在其他普通流元素了,其高度就为0),在实际应用中,会严重影响整体的布局。

所以我们需要使用清除浮动和闭合浮动来处理浮动带来的问题

        清除浮动:对被影响文档位置的块级元素添加属性clear:left | right | both | none;使其下移,直到元素两边没有浮动元素。指使用clear阻止这个元素盒子的边和前面的浮动元素相邻的行为;

        闭合浮动:是使浮动元素闭合,使父元素高度不再塌陷,高度被撑开了,使父元素能够包围浮动元素,从而减少浮动带来的影响。指避免float无法撑高父容器的默认行为

这是两者之间的区别

694700137274b3ca53af03093bd8365a.png

闭合浮动的方法

1、添加额外的元素

   
main:wrap自己闭合浮动了,所以footer不用再清除浮动了(float:left)
side:我也浮动了(float:left)
footer:这次wrap人品爆发了, 通过在末尾添加了一个空标签,已经闭合浮动

优点:简单,代码少,浏览器支持好,不容易出现怪问题

缺点:初学者不理解原理;如果页面浮动布局多,就要增加很多空div,代码语义化变差

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

2、使用伪类元素:新增.parent:after伪对象,其余不变

优点:浏览器支持好,不容易出现怪问题

.warp:after{          content: ".";/*生成一个元素内容为".",为" "时也好用*/          display: block;/*让元素为块级元素*/          height: 0;/*用以下两种方式让元素不渲染*/          visibility: hidden;          clear: both;/*清除浮动*/    }

3、父元素设置overflow:hidden 

.wrap{        margin:0 auto;        width: 500px;        border: 2px solid #EA2C0A;        padding: 10px;        overflow: hidden;/*新增*/        zoom:1;/*新增,针对IE6,但没有经过测试*/   }//第二种,在parent容器中添加overflow:auto的属性,并针对于IE6增加zoom:1的属性。

优点:不存在结构和语义化问题,代码量极少。

缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度。

4、父元素也设置浮动

        只需给parent容器添加 float:left,也可闭合浮动。

   优点:代码少

   缺点:会导致整个页面大部分都处于浮动状态,页面布局容易出现问题

        当然方法还有很多比如:display:table;改变盒模型属性。还有给父级元素添加position:absolute定位等方法。

说到底闭合浮动或者清楚浮动的原理主要就是这么两个原理:

  • 通过在浮动元素的末尾添加一个空元素,设置 clear:both属性,after伪元素其实也是通过 content 在元素的后面生成了内容为一个点的块级元素;

  • 通过设置父元素 overflow 或者display:table 属性等来闭合浮动,其实这是触发了Block formatting contexts (块级格式化上下文,简称 BFC)。块级格式化上下文是CSS可视化渲染的一部分。它是一块区域,规定了内部块盒的渲染方式,以及浮动相互之间的影响关系。

块格式化上下文(BFC)有下面几个特点:

       BFC就像一道屏障,隔离出了BFC内部和外部,内部和外部区域的渲染相互之间不影响。BFC有自己的一套内部子元素渲染的规则,不影响外部渲染,也不受外部渲染影响。

       BFC的区域不会和外部浮动盒子的外边距区域发生叠加。也就是说,外部任何浮动元素区域和BFC区域是泾渭分明的,不可能重叠。

       BFC在计算高度的时候,内部浮动元素的高度也要计算在内。也就是说,即使BFC区域内只有一个浮动元素,BFC的高度也不会发生塌缩,高度是大于等于浮动元素的高度的。

       HTML结构中,当构建BFC区域的元素紧接着一个浮动盒子时,即,是该浮动盒子的兄弟节点,BFC区域会首先尝试在浮动盒子的旁边渲染,但若宽度不够,就在浮动元素的下方渲染。

现在我们再来分析一下overflow清除浮动的原理:

      当元素设置了overflow样式,且值不为visible时,该元素就建构了一个BFC。.warp因设置了值为auto的overflow样式,所以该元素建构出一个BFC,按照上面第三个特点,BFC的高度是要包括浮动元素的,所以.warp的高度被撑起来,达到了清除浮动影响的目的。overflow的作用就是为了构建一个BFC区域,让内部浮动的影响都得以“内化”。

      至于哪些情况下,元素可以建构出BFC,大家可以自行查看CSS文档对BFC的定义,这里就不再赘述了。

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

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

相关文章

Java电商项目-5.内容管理cms系统

目录 实现加载内容分类树功能实现内容分类动态添加删除内容分类节点实现内容分类节点的分页显示实现广告内容的添加实现广告内容删除实现广告内容编辑到Github获取源码请点击此处实现加载内容分类树功能 注: 往后将不在说编写远程服务方法和编写web模块等重复语句, 直接用"…

【JS新手教程】LODOP打印复选框选中的任务或页数

之前的博文:【JS新手教程】LODOP打印复选框选中的内容关于任务:Lodop打印语句最基本结构介绍(什么是一个任务)关于本文用到的JS的eval方法:JS-JAVASCRIPT的eval()方法该文用的是不同checkbox,对应不同的val…

查询范围_企二哥:查询企业经营范围的三种方法

一、查询企业经营范围的三种方法1. 进经营地的工商局网站,有个“全国企业信用信息公示系统”进去后输入公司名称搜索就出来了。2. 有个软件叫做天眼查,打开天眼查输入要查询的公司名称,就可以搜出来了。不光是经营范围,还有许多和企业相关的资…

html显示hdf5文件,python读取hdf5文件

python怎样读取hdf5文件python 中h5py读文件,提示错误File "h5py\_objects完整代码和完整错误信息的图片。Windows环境下给Python安装h5py失败,HDF5已经安装使用pip install h5py命令安装已经安装了HDF5-1.10.0-win64.msi3第一张图上说的是,“不能打开头文件hd…

20145206邹京儒《网络对抗》逆向及Bof基础实践

20145206邹京儒《网络对抗》逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。 该程序同时包含另一个代码片段&#xff0c…

Haproxy+Keepalived实现负载均衡

HaproxyKeepalived实现负载均衡HAProxy介绍反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入新的1.3引入了frontend,backend;f…

C#使用CLR/C++的DLL间接调用Native C++的DLL

C#使用CLR/C的DLL间接调用Native C的DLL 开发环境:win 7 VS2010 简介:C#的exe使用CLR/C间接调用Native C的DLL. 第一步:创建一个C#的Console Application工程-->命名“ConsoleApplication1”。 第二步:创建一个CLR/C的工程&am…

列表输出循环左移_python 列表推导式(经典代码)(21)

文章首发微信公众号,微信搜索:猿说python截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.…

Robot Framework自动化测试(一)--- 安装

所需环境: 1、python 2、robotframework  https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3、wxPython ——>是python的一个GUI库,下面要安装的RIDE是基于这个库开发的,所以要安装 地址:https://wxpython.org…

linux_svn命令操作

转至元数据起始 linux下svn命令大全 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件 svn add file例如&#xff1a…

html怎么让五张照片并排显示,最考验右脑5张照片,30s内能发现问题都是牛人,PS做不出来...

我们的大脑认定这种空间不可能存在,然而却要忍受眼睛亲眼所见其存在的苦恼。“眼见为实”已经成为错误的判断标准,于是你会感到很过瘾,颠覆的快感。事实上,通过色彩,不仅可以考量人们的视力,更能判断大脑水…

Cloud in Action: Install OpenStack Ocata from scratch

Cloud in Action: Install OpenStack Ocata from scratch薛国锋 xueguofeng2011gmail.comOpenStack can control and manage large pools of compute, storage, and networking resources throughout a datacenter, througha dashboard or via the OpenStack API, and work…

CentOS7配置ip

CentOS7配置ip 安装完centos7,重启就可以与linux第一次接触了。我是最小化安装,所以没有图形界面。登录介面显示发型版本和内核版本: CentOS Linux 7(Core) Kernel 3.10.0-862.e17.x86_64 on an x86_64 下面就是登录提示localhost login。在后面输入roo…

Spring Cloud Config服务端配置细节(一)

上篇文章我们看了Spring Cloud中分布式配置中心的一个基本使用,这里边还涉及到许多细节,本文我们就来看看服务端配置中的一些细节。 本文是Spring Cloud系列的第二十三篇文章,了解前二十二篇文章内容有助于更好的理解本文: 1.使用…

POJ 1797 Heavy Transportation

传送门&#xff1a;http://poj.org/problem?id1797 不想吐槽了&#xff0c;弄了好久才AC 实现代码&#xff1a; #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <cstdio> #include <iostream> u…

java8中方法区的内存大小如何设置_从Java8升级到Java11

奇技 指南为什么选择Java11?容器环境支持&#xff0c;GC等领域的增强&#xff0c;仅通过切换到 Java 11 就有 16&#xff05; 的改进。进行了瘦身&#xff0c;更轻量级&#xff0c;安装包体积小。JDK11 是一个长期支持版。1Java11相对于Java8的一些新特性1.变量类型推断Var关…

hive 初认识

结构Hive 是建立在hadoop上的数据仓库架构,它提供了一系列的工具,可以进行数据提取转换加载(这个过程叫做ETL),这是一种可以存储,查询和分析存储在hadoop中的大规模数据的机制.Hive定义了简单的类SQL查询语句 成为hql,他允许数据SQL的用户查询数据.同时 这个语言也允许数据mapr…

计算机组成原理实验读r1,计算机组成原理实验一

计算机组成原理实验一 (5页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;8.90 积分计算机组成原理实验计算机组成原理实验第一章、TEC-5 计算机组成实验箱简介运算器运算器74181通用寄存器通用寄存器…

Spark常见问题解决办法

以下是在学习和使用spark过程中遇到的一些问题&#xff0c;记录下来。 1、首先来说说spark任务运行完后查错最常用的一个命令&#xff0c;那就是把任务运行日志down下来。 程序存在错误&#xff0c;将日志down下来查看具体原因!down日志命令&#xff1a;yarn logs -application…

autosar工具链_Autosar开发与手写代码开发的区别

Autosar开发流程1.BSW开发主要应用工具链&#xff08;Vector等工具&#xff0c;具体可以百度搜索Autosar配置工具&#xff09;来配置&#xff0c;复杂驱动的代码需要手写&#xff0c;但是也要符合Autosar的接口标准&#xff0c;主要包括&#xff0c;CAN通信配置、数字输入配置、…