清除浮动的几大方法

 对于刚接触到html的一些人经常会用到浮动布局,但对于浮动的使用和清除浮动来说是大为头痛的,在这里介绍几个关于清除浮动的的方法。如果你说你要的就是浮动为什么要清除浮动的话,我就真的无言以对了,那你就当我没说。

    关于我们在布局的时候,经常会用到浮动和定位,特别是涉及到宽高自适应的网站布局时,就经常会出现“诶!我父元素的盒子设置的样式怎么不见了”,当你一按F12,在众多代码寻它千百遍之后,终于蓦然回首时发现万花丛中的那个盒子赫然显示着高度为零,what,我的高度怎么为零?不是说好父元素可以靠子元素撑开么?这是什么情况,是不是我的智商有问题?是不是我不适合学这个?为什么别人的可以我的不行?是不是浏览器针对我?其实这种问题刚开始学这个的话每个人都会碰到,这就是典型的父元素高度塌陷问题,这问题主要归根于你的子元素使用了浮动或者定位。

我们都知道,浮动和定位都是使元素脱离文档流,简单的一点讲就是它在网页上不占位置,不按照浏览器规定的顺序来排列,它是漂浮于文档流之上,当它子元素不占位置,父元素就相当于是一个空盒子。就好比一个气球,一开始你吧气球里面灌满了水,气球自然就撑开了,当你有时候有需求会把水倒到杯子里面,倒进杯子之后气球后自然瘪了。子元素就相当于水,父元素就相当于气球,浮动和定位就相当于把水取出来单独放一个容器,想要让原来的气球再撑起来,我们就需要把这个水再放回去,但是如果把水再倒进去就失去了把水放到杯子里的意义,所以现在只有一种方法就是连杯子一起放到气球里面去,这个方法在网页里面应用就是清除浮动。清除浮动有好多种,现在我们来谈谈清除浮动的几种常见的方法(真正的现在才开始)。

第一种就是给父元素加上高度,或许有人会说了,你他吗这是什么狗屁方法,能给高度我还用担心父元素高度塌陷?不可否认的是这是最简单的方法,你什么都不用做一个height:**px就解决了问题,但是这个方法对于那种宽高自适应或者流体布局的网站来说就跟没说一样,一个字“不能给”。面对这种不能给的我们也不是没有办法。

第二种方法是当子元素浮动的时候也给父元素增加浮动,但是这就会引起父元素的父元素高度塌陷,然后我们再给父元素的父元素增加浮动,于是父元素的父元素的父元素再次塌陷,然而我们需要继续给父元素的父元素的父元素增加浮动。这样加上就可可能影响到子元素的祖宗十八代了,所以这种方法只可以解决当前问题,可能会引发一串的麻烦,所以就不可取的。这是我们就需要的第三种方法。

第三种就是使用clear:both,clear属性不允许被清除浮动的元素的左边/右边挨着浮动元素,就是我们需要在兄弟元素上面增加,但兄弟元素不能是浮动的元素且必须是父元素里面最后的一个元素,但是如果子元素在同一排的话,就必须在末尾增加一个空元素来设置clear,这就增加了多余的代码,并且IE6、IE7是不支持这个属性的。并且这个在后期维护中将是噩梦,这是坚决不能忍受的。那么现在还有一种方法。

第四种是使用display:inline-block, 这种方法就不管你一排有多少子元素,都不需要给float,直接全部给个这个属性,inline-block是给子元素转换成行内块,应该都知道行内块是直接在一行内显示的,所以自然不需要使用浮动了,不用浮动的话自然就没有高度塌陷问题了,但是他会带来两个BUG,行内块和其他元素之间会生成一个间隙,但是这个可以给父元素增加font-size:0来解决,还有另外一个问题就是,当行内块里面没有内容时,是按照盒子底部对齐来排列的,块里面有内容的时候,行内块是按照内容的底部对齐来排列,这时候我们就需要使用vertical-align来设置元素的对齐方式,如果一行内有多个元素的时候我们就需要全部设置此属性,也就是说我们使用这个方法就要解决这个方法带来的BUG,这个方法还有一个致命的问题,那就是IE6,IE7同样是不兼容的。所以再牛逼的方法都逃不掉被IE6扼杀的命运。所以这个方法还不是很完美,那我们再找找看还有没有办法。

第五种则是给父元素增加overflow:hidden;当子元素浮动的时候,我们只需要给父元素增加一个overflow:hidden;我们应该知道这个是裁切超出盒子部分的内容,所以有人要问了,为什么这个也可以清楚浮动呢,这个就要牵扯到BFC了,所有能触发BFC的属性都可以解决高度塌陷问题,至于什么是BFC可以去百度查一下,但是这个方法就如第三种和第四种方法一样当遇到万恶的IE6、IE7我们也是game over的,还有一点就是当overflow碰到绝对定位和相对定位的时候也是GG的,这时候我们不要灰心,或许你会问,世界这么大难道就没有能完美解决高度塌陷的方法么?现在我们来看看第六种方法。

第六种方法是我们常用的定位,当我们子元素使用浮动时,给父元素使用相对定位(position:absolute)或者固定定位(fixed)的时候,我们就可以解决高度塌陷问题。因为固定定位的话一般是在特殊情况下使用,所以我们用到的只有相对定位(absolute),但是这个是有局限性的,只能清除浮动带来的高度塌陷,如果子元素使用了相对定位,这个方法是没有用的。这种方法虽然没有像前几种方法那样涉及到兼容问题但是其局限性可见一斑。说到这里或许你们会面无表情的问,敢情你说了这么多都是废话,难道没有一个可以完美解决浮动的方法么?这个嘛……既然说道这了,现在就放出我们的大招,还真有一个办法可以解决,这就是我们该提到的最后的一种方法。

这最后的一种方法就是伪类清除法,就是传说种的万能清除法,它可以兼容任何浏览器包括IE6,这个方法是这样的:

.clear:after{

content:'''';

display:block;

clear:both;

height:0;

overflow:hidden;

visibility:hidden;

}

.clear{zoom:1;}

看到上面的代码应该都看的出来,这个是结合以上的所有方法而形成的,.clear是类名这个可以随便取,但为了语义化才使用这个类名,虽然这个方法看起来很复杂,其实我们只需要在初始化里面加上这个样式,当我们需要清除浮动时只需要在塌陷的那个元素多加一个类名clear就可以 了,看着复杂其实用起来很方便。

 

转载于:https://www.cnblogs.com/xinyuan657797068/p/8994429.html

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

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

相关文章

xgboost keras_用catboost lgbm xgboost和keras预测财务交易

xgboost kerasThe goal of this challenge is to predict whether a customer will make a transaction (“target” 1) or not (“target” 0). For that, we get a data set of 200 incognito variables and our submission is judged based on the Area Under Receiver Op…

2017. 网格游戏

2017. 网格游戏 给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数。现在有两个机器人正在矩阵上参与一场游戏。 两个机器人初始位置都是 (0, 0) ,目标位置是 (1, n-1) 。每个机器…

HUST软工1506班第2周作业成绩公布

说明 本次公布的成绩对应的作业为: 第2周个人作业:WordCount编码和测试 如果同学对作业成绩存在异议,在成绩公布的72小时内(截止日期4月26日0点)可以进行申诉,方式如下: 毕博平台的第二周在线答…

币氪共识指数排行榜0910

币氪量化数据在今天的报告中给出DASH的近期买卖信号,可以看出从今年4月中旬起到目前为止,DASH_USDT的价格总体呈现出下降的趋势。 转载于:https://www.cnblogs.com/tokpick/p/9621821.html

走出囚徒困境的方法_囚徒困境的一种计算方法

走出囚徒困境的方法You and your friend have committed a murder. A few days later, the cops pick the two of you up and put you in two separate interrogation rooms such that you have no communication with each other. You think your life is over, but the polic…

2016. 增量元素之间的最大差值

2016. 增量元素之间的最大差值 给你一个下标从 0 开始的整数数组 nums &#xff0c;该数组的大小为 n &#xff0c;请你计算 nums[j] - nums[i] 能求得的 最大差值 &#xff0c;其中 0 < i < j < n 且 nums[i] < nums[j] 。 返回 最大差值 。如果不存在满足要求的…

Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心

一、Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。 1. 分布式锁的实现思路 说明&#xff1a; 这种实现会有一个缺点&#xff0c;即当有很多进程在等待锁的时候&#xff0c;在释放锁的时候会有…

resize 按钮不会被伪元素遮盖

textarea默认有个resize样式&#xff0c;效果就是下面这样 读 《css 揭秘》时发现两个亮点&#xff1a; 其实这个属性不仅适用于 textarea 元素&#xff0c;适用于下面所有元素&#xff1a;elements with overflow other than visible, and optionally replaced elements repre…

平台api对数据收集的影响_收集您的数据不是那么怪异的api

平台api对数据收集的影响A data analytics cycle starts with gathering and extraction. I hope my previous blog gave an idea about how data from common file formats are gathered using python. In this blog, I’ll focus on extracting the data from files that are…

709. 转换成小写字母

709. 转换成小写字母 给你一个字符串 s &#xff0c;将该字符串中的大写字母转换成相同的小写字母&#xff0c;返回新的字符串。 示例 1&#xff1a;输入&#xff1a;s "Hello" 输出&#xff1a;"hello"示例 2&#xff1a;输入&#xff1a;s "here…

前端技术周刊 2018-09-10:Redux Mobx

前端快爆 在 Chrome 10 周年之际&#xff0c;正式发布 69 版本&#xff0c;整体 UI 重新设计&#xff0c;同时iOS 版本重新将工具栏放置在了底部。API 层面&#xff0c;支持了 CSS Scroll Snap、前端资源锁 Web Lock API、WebWorker 里面可以跑的 OffscreenCanvas API、toggleA…

PPT制作

0.【整体风格】整体风格统一 界面排版 0.1 字体大小&#xff1b; 0.2 字体颜色&#xff1b; 0.3 字体的种类统一(不是指只取一种字体)&#xff09; 1.【表达】结构化表达&#xff1b; 2.【取色】取色风格统一&#xff1b; 技巧&#xff1a;主色不超过三种&#xff0c;色彩不宜多…

1984. 学生分数的最小差值

1984. 学生分数的最小差值 给你一个 下标从 0 开始 的整数数组 nums &#xff0c;其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。 从数组中选出任意 k 名学生的分数&#xff0c;使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。 返回可能的 最小差值 。…

WBLoadingIndicatorView(加载等待动画)

中文说明 基于CALayer封装加载等待动画&#xff0c;目前支持6种类型动画&#xff1a; typedef NS_ENUM(NSInteger, WBLoadingAnimationType) { WBLoadingAnimationcircleStrokeSpinType, WBWBLoadingAnimationBallPulseType, WBWBLoadingAnimationBallClipRotateType, WBWBLoad…

逻辑回归 概率回归_概率规划的多逻辑回归

逻辑回归 概率回归There is an interesting dichotomy in the world of data science between machine learning practitioners (increasingly synonymous with deep learning practitioners), and classical statisticians (both Frequentists and Bayesians). There is gener…

sys.modules[__name__]的一个实例

关于sys.modules[__name__]的用法&#xff0c;百度上阅读量比较多得一个帖子是&#xff1a;https://www.cnblogs.com/robinunix/p/8523601.html 对于里面提到的基础性的知识点这里就不再重复了&#xff0c;大家看原贴就好。这里为大家提供一个详细的例子&#xff0c;帮助大家更…

ajax不利于seo_利于探索移动选项的界面

ajax不利于seoLately, my parents will often bring up in conversation their desire to move away from their California home and find a new place to settle down for retirement. Typically they will cite factors that they perceive as having altered the essence o…

C#调用WebKit内核

原文:C#调用WebKit内核版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u013564470/article/details/80255954 系统要求 Windows与.NET框架 由于WebKit库和.NET框架的要求&#xff0c;WebKit .NET只能在Windows系统上运行。从…

数据分析入门:如何训练数据分析思维?

本文由 网易云 发布。 作者&#xff1a;吴彬彬&#xff08;本篇文章仅限知乎内部分享&#xff0c;如需转载&#xff0c;请取得作者同意授权。&#xff09; 我们在生活中&#xff0c;会经常听说两种推理模式&#xff0c;一种是归纳 一种是演绎&#xff0c;这两种思维模式能够帮…

2011. 执行操作后的变量值

2011. 执行操作后的变量值 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言&#xff1a; X 和 X 使变量 X 的值 加 1 –X 和 X-- 使变量 X 的值 减 1 最初&#xff0c;X 的值是 0 给你一个字符串数组 operations &#xff0c;这是由操作组成的一个列表&#xff0c;返回执行…