HTML文档流中设置元素浮动导致父元素高度无法自适应怎么办

发布时间:2022-03-08 14:40:13 作者:小新
来源:亿速云 阅读:184

小编给大家分享一下HTML文档流中设置元素浮动导致父元素高度无法自适应怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  元素浮动定义

  float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

  如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。

  注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。

  why 子元素浮动 会导致父元素 高度塌陷?

  这是因为内部的元素设置float:left || right后,就丢失了clear:both和display:block(持怀疑态度)的样式,所以外部的父容器不会被撑开。

  举个 :

  子元素未设置浮动,父元素自动被撑开

  <body>

  <div class="father">

  <div class="son"></div>

  </div>

  </body>

  <style>

  .father {

  width: 400px;

  border: 1px solid blue;

  }

  .son {

  width: 200px;

  height: 200px;

  border: 1px solid red;

  background-color: yellow;

  }

  </style>

  子元素设置浮动,父元素高度塌陷

  <body>

  <div class="father">

  <div class="son"></div>

  </div>

  </body>

  <style>

  .father {

  width: 400px;

  border: 1px solid blue;

  }

  .son {

  width: 200px;

  height: 200px;

  border: 1px solid red;

  background-color: yellow;

  float: left;

  }

  </style>

  闭合浮动的常见解决方案

  最终,我们要的效果是要跟没设置浮动之前的效果一样,让父元素高度自适应:

  在浮动元素之后添加清除浮动的子元素:

  <div class="father">

  <div class="son"></div>

  <div class="clearFloat"></div>

  </div>

  <style>

  .father {

  width: 400px;

  border: 1px solid blue;

  }

  .son {

  width: 200px;

  height: 200px;

  border: 1px solid red;

  background-color: yellow;

  float: left;

  }

  .clearFloat {

  width: 100%;

  height: 0;

  clear: both;

  }

  </style>

  父元素设置 overflow: hidden

  <div class="father">

  <div class="son"></div>

  </div>

  <style>

  .father {

  width: 400px;

  border: 1px solid blue;

  overflow: hidden;

  }

  .son {

  width: 200px;

  height: 200px;

  border: 1px solid red;

  background-color: yellow;

  float: left;

  }

  </style>

  是不是很神奇!因为子元素的浮动,会导致父元素误认为content高度为0(即蓝色边框为一条线),所以父元素设成overflow:hidden溢出隐藏的话,直觉上应该子元素由于溢出导致不显示才对。但真实效果是:父元素设成overflow:hidden溢出隐藏后,父元素高度居然自适应了!这是怎么回事呢?是因为 BFC(Block Formatting Context),感兴趣的童鞋,点击链接了解一下哈...

  用 :after 伪元素,思路是用:after元素在div后面插入一个隐藏文本”.”,隐藏文本用clear来实现闭合浮动

  .father:after {

  clear: both;

  content: ".";   //任意文本如“dfgdfg”

  display: block;

  height: 0;      //高度为0且hidden让该文本彻底隐藏

  visibility: hidden;

  }

以上是“HTML文档流中设置元素浮动导致父元素高度无法自适应怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 子元素浮动,父元素高度为0现象解释和原理浅见
  2. 关于HTML浮动元素高度问题的介绍

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

html

上一篇:XML语言中如何设置样式

下一篇:css中如何设置边框样式

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》