首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么浮动元素的非浮动父母会崩溃?

这个问题涉及到CSS布局和浮动元素的概念。当一个非浮动元素的父元素包含浮动元素时,可能会出现布局崩溃的情况。这是因为浮动元素脱离了文档流,导致其父元素无法识别其高度,从而导致布局错误。

为了解决这个问题,可以使用以下方法:

  1. 清除浮动:在父元素中使用clear属性或者clearfix技巧来清除浮动,使父元素能够识别到浮动元素的高度。
  2. 使用BFC(Block Formatting Context):BFC是一种CSS布局模式,可以阻止浮动元素影响其他元素的布局。可以通过设置父元素的overflow属性为hidden或auto来触发BFC。
  3. 使用Flexbox或Grid布局:使用现代CSS布局技术可以更容易地解决浮动元素导致的布局问题。例如,使用Flexbox的align-items属性或Grid的grid-template-columns属性可以更简单地控制元素的布局。

推荐的腾讯云相关产品:

  1. 腾讯云对象存储(COS):提供高性能、低成本的云存储服务,可以用于存储网站静态资源、图片、视频等。
  2. 腾讯云内容分发网络(CDN):通过全球节点加速网站访问速度,提高用户体验。
  3. 腾讯云负载均衡:可以将用户请求分发到多个服务器,提高网站的可用性和扩展性。
  4. 腾讯云云服务器:提供弹性、可扩展的虚拟服务器,可以满足各种应用场景的需求。

腾讯云产品介绍链接地址:https://cloud.tencent.com/product

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

元素浮动

一、浮动 HTML元素浮动是通过css来设定,css中float属性可以让元素浮动或者右浮动,具体设置参数如下 float: left; /*左浮动*/ float: right; /*右浮动*...,其实上图就是因为没有给ul指定高度,而ul元素li全部浮动后导致ul高度塌陷。...3.1 给父级元素设定高度 当然我们可以通过给ul设置高度,代码如下 ul{ height: 24px; } 效果如下 但是这种方式影响布局,需要手动再次去调整子元素布局,实际情况下用得很少...设置css属性float ul{ float: left; } 页面显示效果如下 可以看到效果和第二种方式差不多,但是在网页布局中,给父元素增加浮动导致其他方面的问题,也不推荐使用 3.4 增加...html元素清除浮动 在ul内部元素最后增加一个html元素,给html元素增加css属性clear来清除浮动 首页 注册 <li

16410

CSS浮动为什么不会遮盖同级元素

原因是浮动后,元素脱离了文档流,不占据空间,想左或向右移动直至左右两边碰到包含框两边。...为什么我对两张图中之一进行浮动时,不会遮住另一张图呢? ---- 2.我理解错在了哪里 首先,再一次查看W3CSchool官网权威对CSS浮动讲解,详见:CSS浮动。...原文截图如下: image.png 图中红框这句话,明明说到对框进行浮动时,脱离文档流,若向右浮动直到,直到它右边框碰到包含框右边缘,随后便说道,若向左浮动,脱离文档流并向左移动,直到它左边缘碰到包含框左边缘...因为这样,就会导致原有的框被浮动框覆盖。 按照W3CSchool理解,怎么也不明白为什么我测试源码中,框中图片并没有覆盖另一个框中图片呢?...因此,上图中红框中那句成立前提是:浮动框在移动过程中,碰到框没有内容或者框内内容自我调整位置以防止被覆盖。比如标签中文本遇到浮动框就自我调整位置,以防止被覆盖。

94910

CSS浮动为什么不会遮盖同级元素

问题: W3CSchool中讲解CSS定位,浮动那一节中,明确说对框1进行向左浮动时会遮住框2,原因是浮动后,元素脱离了文档流,不占据空间,想左或向右移动直至左右两边碰到包含框两边。...为什么我对两张图中之一进行浮动时,不会遮住另一张图呢? ---- 2.我理解错在了哪里 首先,再一次查看W3CSchool官网权威对CSS浮动讲解,详见:CSS浮动。 原文截图如下: ?...图中红框这句话,明明说到对框进行浮动时,脱离文档流,若向右浮动直到,直到它右边框碰到包含框右边缘,随后便说道,若向左浮动,脱离文档流并向左移动,直到它左边缘碰到包含框左边缘。...因为这样,就会导致原有的框被浮动框覆盖。 按照W3CSchool理解,怎么也不明白为什么我测试源码中,框中图片并没有覆盖另一个框中图片呢?...因此,上图中红框中那句成立前提是:浮动框在移动过程中,碰到框没有内容或者框内内容自我调整位置以防止被覆盖。比如标签中文本遇到浮动框就自我调整位置,以防止被覆盖。

1.2K20

浮动元素容器clearing问题

(图二 实际视图是子元素显示在父容器外部) 两者好像脱离了关系一样,怎么这样? 2. 问题原因 其实,原因很简单,与浮动定位有关。...解决方法一:添加空元素 经典解决方法,就是在浮动元素下方添加一个浮动元素,就像图三。...(图三 在父容器底部添加一个浮动元素) 代码这样写: <div style="float...原理是父容器现在必须考虑<em>非</em><em>浮动</em>子<em>元素</em><em>的</em>位置,而后者肯定出现在<em>浮动</em><em>元素</em>下方,所以显示出来,父容器就把所有子<em>元素</em>都包括进去了。 这种方法比较简单,但是要在页面中增加冗余标签,违背了语义网<em>的</em>原则。...,<em>会</em>影响到后面<em>元素</em><em>的</em>定位,而且有时候,父容器是定位死<em>的</em>,无法变成<em>浮动</em>。

60720

【CSS】浮动 ① ( 浮动引入 | 盒子模型位置摆放三大机制 - 普通流、浮动、定位 | 行内块元素摆放缺陷 )

文章目录 一、盒子模型位置摆放三大机制 - 普通流、浮动、定位 二、行内块元素摆放缺陷 一、盒子模型位置摆放三大机制 - 普通流、浮动、定位 ---- 盒子模型位置摆放三大机制 : 普通流 : 默认摆放样式..., 显示到边缘 自动换行 ; 如 : span , strong , a 等 ; 浮动 : 盒子模型 在 普通流 基础上 覆盖显示 , 多个 块级元素 可以在同一行 相互覆盖显示 ; 定位 : 盒子模型...在 浏览器 指定位置 显示 ; 普通流 相当于 Android 中 线性布局 ; 浮动 相当于 Android 中 帧布局 或 相对布局 或 约束布局 ; 定位 相当于 Android 中...绝对布局 ; 二、行内块元素摆放缺陷 ---- 行内块元素摆放缺陷 : 缝隙无法控制 : 行内块元素 之间 有缝隙 , 该缝隙大小无法控制 ; 排列顺序无法控制 : 行内块元素只能从左到右进行排列..., 不能 左右对齐 或 右对齐 排列 ; 下面的示例中 , 行内块元素之间始终有一条 无法控制缝隙 ; 行内元素代码示例 : <!

55530

webkit中BFC元素临近浮动元素边距bug

其实以webkit为核心浏览器,包括但不限于Safari和Chrome,也有一个关于浮动和边距bug,同样造成布局错误。...触发这个bug条件是: 在一个浮动元素上应用overflow,且其值不为visible(这将形成一个Block Formatting Context元素)。...这个BFC元素拥有一个浮动兄弟元素。 在这个BFC元素上应用与其兄弟元素浮动方向相同margin。...这个BFC元素没有指定宽度值(或者指定width:auto) 当满足触发条件时,该BFC元素另一侧边距将不再受css控制(在webkit核心浏览器下),而是由你所指定浮动元素相同边距决定,即使你在...); 当BFC与浮动方向相同边距大于浮动元素占据总宽度时,BFC另一侧边距等于浮动元素占据总宽度(下图第三种情况)。

1.6K50

【CSS】课程网站 网格商品展示 模块制作 ③ ( 清除浮动需求 | 没有设置高度盒子且内部设置了浮动 | 使用双伪元素清除浮动 )

文章目录 一、清除浮动需求 ( 没有设置高度盒子且内部设置了浮动 ) 二、清除浮动代码示例 一、清除浮动需求 ( 没有设置高度盒子且内部设置了浮动 ) ---- 如果盒子没有设置高度 , 并且盒子中还设置了浮动...228 * 5 + 15 * 4 = 1200 像素 , 但是最后一个盒子右侧添加 15 像素右边距地话 , 导致最后一个元素掉到第二行 , 这里需要将盒子宽度从...没有设置高度 , 并且设置了浮动 , 如果不清除浮动 , 后续排列都会出现问题 ; 参考 【CSS】清除浮动 ③ ( 清除浮动 - 使用 after 伪元素 | 语法简介 | 兼容低版本浏览器 | 原理分析...) 【CSS】清除浮动 ④ ( 清除浮动 - 使用双伪元素清除浮动 | 代码示例 ) 博客清除浮动 ; 使用 /* 清除浮动 - 使用双伪元素清除浮动 */ .clearfix:before, .clearfix...; 清除浮动时 , 给要清除浮动 父容器 , 设置 clearfix 样式 ; 二、清除浮动代码示例 ---- 首先 , 在 CSS 样式中 , 定义 使用双伪元素清除浮动 样式 ; /* 清除浮动

1K20

关于BFC不会被浮动元素遮盖一些解释

规范中指出,在同一个BFC内,作为子元素BFCborder-box不应该覆盖同为子元素浮动元素margin-box。其实,浏览器在内部通过隐式给子BFC设置margin值来防止覆盖。...例证   创建两个浮动元素和一个BFC,然后改变BFCmargin值和浮动元素margin值,观察它们位置。...可见BFCborder-box不会覆盖浮动元素。 为了进一步验证BFCborder-box不会覆盖浮动元素margin-box,我们设置.f1margin-right:30px; ?...另外,如果设置.bfc宽度值过大(两个浮动元素水平分量与bfc水平分量之和大于包含块宽度),那么.bfc向下放置知道有足够空间容纳为止。 使用       那么这个技巧对我们有什么用处呢?...近日在BFC下多栏自适应布局 一文中见识到了BFC不会被浮动元素覆盖用处。对于一个浮动侧边栏,我们可以触发右边栏BFC,这样右边栏就不会被浮动侧边栏所覆盖,但是如何设置两栏之间间隔呢?

97790

解密clear:both真实含义 及 after伪元素浮动核心原理

码匠(HTML5学堂):据说只有12%HTML5(前端)开发工程师,在最初学习浮动布局时,没有被clear属性所“迷惑”…… 你,是那12%么?...来试试(不定项选择): A 清除掉 当前元素浮动效果,防止当前浮动元素对其他兄弟级元素影响 B 让当前元素左右不存在浮动元素 C 清除掉 当前元素前后相邻兄弟级浮动元素对当前元素影响 D 清除掉...当前元素前面相邻兄弟级浮动元素对当前元素影响 Tips:当前元素,指的是设置clear: both这个元素 ?...实例解析clear属性及伪元素浮动原理 So,视频课程送给大家~~~ 课程大纲(梗概): clear属性真实含义 清浮动两种类型,清浮动时要区分清楚 after伪元素浮动方法及其核心原理 悄悄告诉你...视频课程地址 《解密clear:both真实含义 及 after伪元素浮动核心原理》 视频课程 扫描如下二维码 ? ?

2.4K30

css面试点三:清除浮动九中方法-高度塌陷理解-伪元素使用

浮动定义 使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻浮动元素停了下来。 浮动框可以左右移动,直到遇到另一个浮动框或者遇到它外边缘包含框。...浮动框不属于文档流中普通流,当元素浮动之后,不会影响块级元素布局,只会影响内联元素布局 当包含框高度小于浮动时候,此时就会出现“高度塌陷”。 为什么要清除浮动?...清除浮动主要是为了解决,父元素因为子级元素浮动引起内部高度为0问题。 当父元素不给高度时候,内部元素浮动时会撑开,而浮动时候,父元素变成一条线。...内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出元素 原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器自动检查浮动区域高度...原理:所有代码一起浮动,就变成了一个整体 优点:没有优点 缺点:产生新浮动问题。

92220

讲一下怎么区分伪类、伪元素,同时优雅处理页面浮动问题

原因很简单,因为我发现这几个概念不仅仅是编码的人搞不明白,很多前端,就是靠这个技术吃饭的人都很多搞不明白怎么回事为什么浮动一起说呢,其实这篇文章真正要说浮动给我们布局带来问题,我们应该怎么合理处理...,还有就是伪元素到底是什么,我们应该怎么优雅使用,那为什么写伪类呢?...但是这里需要注意一点是假如在一行之上只有极少空间可供浮动元素,那么这个元素跳至下一行,这个过程持续到某一行拥有足够空间为止,产生浮动元素,块级元素是看不到他们 写个例子 <!...也就是说,被浮动元素是不可以撑起来这个外层div 浮动元素在父级元素不够包它时候,他自动填充到下一行 写个例子 <!...这里当外层元素宽度不够支持内部元素宽度总和时候,浮动元素是直接就换到下一行了 当我们将元素清除浮动以后,我们就可以直接使父级看到他们,我们可以直接在原来基础上新加一个p元素,然后给p元素进行浮动清除

48710

【CSS】思考和再学习——关于CSS中浮动和定位对元素宽度外边距其他元素所占空间影响

上下两个div之间距离为10px;嗯?为什么是10px呢,我们将4个divmargin都为10px,两个div上下距离不应该是10px +10px = 20px吗?..."div4"这个文本不是被包裹在div4这个元素里面吗,为什么浮动元素div2“怼”下来了?刚刚不是还说好浮动 ==脱离文档流 == 不占其他元素物理空间吗?对啊,这里说元素,并不是文本。...浮动元素影响文本位置! 我们甚至可以无脑地推测,float一开始设计作用就是为了解决以下这个问题—— 让文本环绕一个图片,就像下面这个W3C案例一样: ?...4.浮动流位居标准流之上(也就是说浮动元素覆盖标准流元素) 这个根据上面那个例子就可以看出来,这里就不多说了 六.实践案例 好,说了这么多,还是用以上知识点来一个实践案例比较痛快,下面这个案例是...【实现思路】:正如上面所说,浮动脱离文档流从而不占据其他元素物理位置,而我们让div1向左浮动了,这表示我们在考虑div2布局时候完全可以把div1当作不存在。

2K110

【移动端网页布局】流式布局案例 ⑤ ( 连续排列链接图片 | 设置盒子圆角 | 超出部分隐藏 | 设置浮动布局 | 精确计算浮动元素宽度避免换行 | 设置图片宽度自适应 )

, 三个链接图片水平排列在一起 , 并且中间没有缝隙 , 说明这是使用 浮动 进行设置 , 为父容器三个子元素都设置 左浮动 , 就可以实现上述效果 ; 设置浮动后 , 还需要设置子元素宽度 ,...如果子元素横向累加宽度超过 当前宽度 , 自动换行 , 因此这里为每个子元素设置一个 1/3 宽度 , 即 33.33% ; 子元素 设置浮动和宽度样式如下 : .brand div..., 按照宽高比等比例缩放 ; 设置样式为 : .brand div img { /* 设置图片链接中图片 在水平方向上充满父容器即可 */ width: 100%; } 二、完整代码实例.../* 清除浮动固定样式 如果要为某个容器清除浮动 为其设置 class="clearfix" 样式 */ content: ""; display: block.../images/jd.png) no-repeat; /* 设置背景图片尺寸 缩放背景图片 */ background-size: 20px 15px; } .jd-icon::after

3.5K20

设置css属性clear为什么时可清除左右两边浮动_clear both

大家好,又见面了,我是你们朋友全栈君。...DIV+CSS clear both清除产生浮动 我们知道有时使用了css float浮动产生css浮动,这个时候就需要清理清除浮动,我们就用clear样式属性即可实现。...both :  不允许有浮动对象 left :  不允许左边有浮动对象 right :  不允许右边有浮动对象 3、clear解释: 该属性值指出了不允许有浮动对象边情况,又对象左边不允许有浮动、...效果截图 加上了clear:both 四、DIVCSS5总结 使用clear可以清除float产生浮动,注意clear样式对象加入位置,如上案例对“.divcss5”清除浮动,我们就只需要在此对象...——————————–个人总结——————————– 意思就是消除之前浮动。- – 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

1.3K30

CSS float浮动深入研究、详解及拓展(二)

p=594 接上回… 五、浮动本职工作 浮动本职工作是让匿名inline boxes性质文字环绕图片显示,而其他所有用浮动实现效果都不是浮动应该做事情,我称之为“本职工作”。...可能有人反驳,你何处此言,有何证据? 我们只要静下心来好好想想浮动本质,实现原理,就可以知道为什么浮动本不应该用来对页面进行布局。还记得上一部分所说浮动本质吗?即“包裹与破坏”。...我们可以用这个(“包裹与破坏”)解释为什么浮动可以让li这类block水平元素水平排列。...理解了这个您就会明白为什么要是这里图片添加了float属性,li高度塌陷了:浮动破坏了inline box。这个后面会详细讲解。...八、解决高度塌陷问题 – 清除浮动 CSS中有个讨论较多的话题就是如何清除浮动,清除浮动其实就一个目的,就是解决高度塌陷问题。为什么高度塌陷?什么时候高度塌陷?

57500

清除浮动几种方法

如果IE67下,浮动元素父级具有width值(auto),是不需要清除浮动。因为width已经触发了haslayout。...利用 overflow 清除浮动 其实第一次看到可以用 overflow 清除浮动(其实我是拒绝),有一种很神奇感觉,为什么这样可以清除浮动?!而这样问题,也作为面试题被问过。...####BFC几大用处 防止margin折叠 清除浮动 不会环绕浮动元素 ####BFC特点 形成独立空间,对内部元素负责,隔离内部元素对外界影响。...使用除了 overflow 默认值 visible 以外值auto hidden scroll 均可清除浮动。当然,使用 scroll 的话滚动条是一直显示。 2....否则,在清除了浮动同时会带来另外问题:超出容器部分内容会被“切”掉,或者出现滚动条。 3. 在Explorer Mac中,设置 auto 始终显示滚动条。(不懂mac 没测过) 4.

71220

横向双倍外边距BUG — IE6盒模型

另一方面,我们几个讲师一直将IE6作为辅助测试工具-如果子级盒模型大小超出了父级大小,那么在IE6下必然是崩溃。...对于这种低级错误,虽然其他浏览器都能够处理和调整,但是却绝不是一个专业开发人员~ margin双倍间距bug IE6存在不少兼容问题,今天要说是IE6横向双倍外边距。...触发条件 当浮动元素浮动方向和浮动边界方向一致。此时用IE6查看网页,就会发现,设置横向边距变成了双倍。 例子:元素向左浮动并且设置了左侧外边距出现了这样双边距bug。...同理,元素向右浮动并且设置右边距也会出现同样情况。同一行如果有多个浮动元素,第一个浮动元素会出现这个双边距bug,其它浮动元素则不会。...修正bug 只需要给浮动元素加上display:inline;CSS属性就可以了。 欢迎沟通交流~HTML5学堂

65630
领券