css清除浮动无效,CSS清除浮动方法总结

css清除浮动无效,CSS清除浮动方法总结清除浮动的原因假设一个 div 内部有个浮动的 div 当内部 div 的高度要比外层的父级 div 高度大时 将会导致父级 div 高度无法随着内部 div 的高度自适应 这是由于浮动元素已经脱离了正常文档流 因此无法对父级元素产生影响 举例如下 复制代码代码如下 a width 100px border 1pxsolid ccc b height 50px float l

清除浮动的原因

假设一个 div 内部有个浮动的 div,当内部 div 的高度要比外层的父级 div 高度大时,将会导致父级 div 高度无法随着内部 div 的高度自适应,这是由于浮动元素已经脱离了正常文档流,因此无法对父级元素产生影响。举例如下:

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

1440b6083f77ab31b82112cb0667a088.png

此时,我们就需要手动来清除浮动。

加入空 div

这是我之前的做法,即在结尾处添加一个空的 div,并设置 clear: both 属性。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

#clear {

clear: both;

}

A

B

2922c5a07afd309040a033f194d74ff5.png

这个方法看似简单,但是如果清除浮动的地方较多,会产生很多无意义的 div,对于整个 HTML 结构无疑是有弊端的。

设定父级 div 高度

这个方法有点 hard code,由于父级 div 无法高度自适应,因此我们可以直接给父级 div 设置一个固定的高度值,如上例,考虑到 border 的值,设定父级 div 高度为 52px。

复制代码代码如下:

#a {

width: 100px;

height: 52px;

border: 1px solid #ccc;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

2922c5a07afd309040a033f194d74ff5.png

这个方法很快速但也脆弱,一旦内部浮动元素高度发生变化就无效了,所以只能应用于高度固定的场景。

设定父级 div 属性 overflow

直接给父级 div 添加 overflow: hidden 或 overflow: auto 属性,这里以 overflow: hidden 为例。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

overflow: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

2922c5a07afd309040a033f194d74ff5.png

这个看上去又简单又实用,但是你不能对父级 div 设置高度,一旦父级 div 设置了固定高度,那么浮动元素超出的部分也会被隐藏。

复制代码代码如下:

#a {

width: 100px;

height: 20px;

border: 1px solid #ccc;

overflow: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

683e31887a42a37f7dab0931b5f2bec5.png

当使用 overflow: auto 属性同时设定固定高度时效果为:

f832ab907d6c8fcde976830e16e3c54d.png

设置父级 div 伪类 before && after

这个方法即问题中介绍的新方法,对父级 div 设置伪类 before 和 after 的值。

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#a:before, #a:after {

content: “”;

display: block;

clear: both;

height: 0;

visibility: hidden;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

2922c5a07afd309040a033f194d74ff5.png

这个方法应该是最佳方案,即不会产生无意义的空 div,同时当父级元素高度固定时并不会影响内部的浮动元素高度。但是唯一一点就是伪类的兼容性问题。对于低版本的 IE 浏览器我们可以使用:

复制代码代码如下:

#a {

zoom:1

}

复制代码代码如下:

#a {

width: 100px;

border: 1px solid #ccc;

}

#a:before, #a:after {

content: “”;

display: table;

clear: both;

}

#b {

height: 50px;

float: left;

border: 1px solid #ccc;

}

A

B

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207613.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:28
下一篇 2026年3月19日 下午1:29


相关推荐

  • 计算机如何修改任务管理器,win7如何更改任务管理器快捷键_win7更改任务管理器快捷键的教程…

    计算机如何修改任务管理器,win7如何更改任务管理器快捷键_win7更改任务管理器快捷键的教程…我们在打开任务管理器的时候,通常是CTRL+ALT+DEL就可以快速打开,不过有许多用户装完win7系统之后,发现任务管理器快捷键变成了Ctrl+Shift+Esc,这让用户们用着很不习惯,其实我们也可以自己手动更改快捷键,现在给大家带来win7更改任务管理器快捷键的教程。具体步骤如下:1、在“开始”菜单的搜索框输入指令gpedit.msc,回车打开Win7系统的组策略编辑器。2、在组策略编辑器里…

    2022年6月18日
    36
  • pageoffice使用笔记

    pageoffice使用笔记文章目录 springboot 项目集成 pageofficepa 使用 WebOpen 打开服务器上文件 springboot 项目集成 pageoffice 在项目 src 目录下新建 lib 文件夹 将 jar 包引入 pom 文件配置依赖 dependency groupId com zhuozhengsof groupId lt dependency

    2026年3月16日
    2
  • CISCO产品

    CISCO产品

    2021年8月1日
    109
  • centos7下修改nginx默认端口

    centos7下修改nginx默认端口在基于 CentOS 或 RHEL 的 Linux 发行版中 需要安装 policycoreut 软件包并添加 SELinux 对 Nginx 所需的以下规则以绑定到新端口 这里需要先安装 semanage 再安装 policycoreut 软件包 安装 semanage 命令 yuminstallse 如果提示 Nopackagesem 执行如下命令 yumprovidess 以上命令执行成功后 再执行 yum yinstallpoli

    2026年3月19日
    2
  • shell运维脚本实例_100个必会的shell脚本

    shell运维脚本实例_100个必会的shell脚本无论是系统运维,还是应用运维,均可分为“**纯手工”—>“脚本化”—>“自动化”—>“智能化”**几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避免重复性操作及风险,另一方面提高执行效率。在自动化运维的转变过程中,经常使用的可能就是shell脚本了。很多人认为shell脚本简单,但其实Shell的小脚本却有大智慧。别小看几十行代码,它夹杂着系统设计、代码规范和操作经验等等细节,在建设自动化运维的工作中,还是很值得我们研究学习的。为了帮助大.

    2026年4月16日
    4
  • cmake -D_cmake -G

    cmake -D_cmake -G项目中想用googletest,项目也是用cmake管理的。于是想用cmake添加gtestset(CMAKE_PREFIX_PATH”/path/to/gtest/install/path/cmake/path”${CMAKE_PREFIX_PATH})enable_testing()set(GTEST_ROOT”/path/to/gtest…

    2026年4月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号