文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

小编给大家分享一下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文档流中设置元素浮动导致父元素高度无法自适应怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯