We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CSS中正常的流内容或者流布局虽然也足够强大,但是有时候我们希望有一些特殊的布局表现,例如,文字环绕效果,或者元素固定在某个位置,要实现这样的效果,正常的流就有些捉襟见肘。因此,CSS中有float属性,专门通过破坏正常的“流”来实现一些特殊的样式表现。当然,既然有破坏,就有保护其他元素不被破坏的clear属性,本章就来介绍 CSS的float和clear属性。
float
clear
W3school中给出的浮动定义:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框脱离文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
W3school
浮动的本质:一句话解释,浮动的本质就是为了实现文字环绕效果。而这种文字环绕,主要指的就 是文字环绕图片显示的效果。
浮动的本质
浮动的特性:
浮动的特性
所谓包裹性,由包裹和自适应性两部分组成。
包裹
自适应性
200px
128px
块状化的意思是,元素一旦float的属性值不为none,则其display计算值就是block或者table。ps:格式化上下文将在另一篇文章详细分析
none
display
block
table
ps:格式化上下文将在另一篇文章详细分析
在了解浮动作用机制之前,我们首先需要了解两个和float相关的术语,一是浮动锚点(float anchor),二是浮动参考(float reference)。
浮动锚点
浮动参考
margin
border
padding
下面我们用简单的例子来理解这两个概念:
// HTML <h1>我是一个很长的内容可以实现换行<a href="">更多</a></h1> <h1>我是一个很长的内容可以实现换行占两行<a href="">更多</a></h1> // CSS a { float: right; color: blue; } h1 { width: 150px; border: 1px solid black; }
效果图:
相信大家看一眼代码和效果图应该也没啥疑问了,感性认知这样写就会出现这样的效果,但是如果我问大家具体的作用机制是什么,恐怕鲜有人能回答出来。
通过最简单的例子来理解透彻背后的作用机制,相信是每个人学习的目标跟重点了,现在让我们了解下浮动的作用机制:
行框盒子
更多
float:right
a
浮动元素可能会造成父元素高度塌陷的问题,所有清楚浮动就显得非常重要了,在介绍清除浮动方式之前,首先要先了解清楚浮动的clear属性
CSS有一个专门用来处理float属性带来的高度塌陷等问题的属性,这个属性就是clear。其语法如下:
CSS
clear: none | left | right | both
注意:
注意
clear:left
clear:right
clear:both
::after
.clear:after { content: ''; display: table; // 也可以是'block',或者是'list-item' clear: both; }
HTML结构如下,在父div上再添加一个clearfix类:
HTML
div
clearfix
<div class="parent clearfix"> <div class="child"></div> </div>
样式应用如下:
.parent { border: 1px solid; } .child { float: left; width: 200px; height: 200px; background: pink; } /*开启haslayout*/ .clearfix { *zoom: 1; } .clearfix:after { content: ''; display: block; clear: both; height:0; line-height:0; visibility:hidden; }
给浮动元素的父容器添加一个clearfix,然后给这个class添加一个:after伪元素,实现元素末尾添加一个看不见的块元素来清理浮动。这是通用的清理浮动方案,推荐使用。
通过在父元素最后添加一个div标签,并且给他添加clear:both属性值。需要注意在父级元素末尾添加的元素必须是一个块级元素,否则无法撑起父级元素高度。
clear:both
<div class="parent"> <div class="child"></div> <div class='clearfix'></div> </div>
.parent { border: 1px solid; } .child { float: left; width: 200px; height: 200px; background: pink; } .clearfix { clear:both }
HTML结构中,在父元素里面最后加入br标签,并且添加clear=“all”属性值
br
clear=“all”
<div class="parent"> <div class="child"></div> <br clear="all"> </div>
.parent { border: 1px solid; } .child { float: left; width: 200px; height: 200px; background: pink; }
这种方式让父容器形成了BFC(块级格式上下文),而BFC可以包含浮动,通常用来解决浮动父元素高度坍塌的问题。
BFC
.parent { border: 1px solid; overflow: hidden; } .child { float: left; width: 200px; height: 200px; background: pink; }
这里可以给父元素设置overflow:auto也可以,但是为了兼容IE最好使用overflow:hidden。
overflow:auto
IE
overflow:hidden
注意:还有一种是直接给父元素设置高度height,但是实际使用不大可能给所有的盒子加高度,也不推荐使用,知道有这种方式即可。如果感兴趣可以去查阅了解即可。
height
希望本文对你的学习有所帮助,如果喜欢的话,欢迎点赞、关注一波。大家加油!
更多优质文章可以访问GitHub博客,欢迎帅哥美女前来Star!!!
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
CSS中正常的流内容或者流布局虽然也足够强大,但是有时候我们希望有一些特殊的布局表现,例如,文字环绕效果,或者元素固定在某个位置,要实现这样的效果,正常的流就有些捉襟见肘。因此,CSS中有
float
属性,专门通过破坏正常的“流”来实现一些特殊的样式表现。当然,既然有破坏,就有保护其他元素不被破坏的clear
属性,本章就来介绍 CSS的float
和clear
属性。浮动是什么?
W3school
中给出的浮动定义:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框脱离文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。浮动的本质和特性?
浮动的本质
:一句话解释,浮动的本质就是为了实现文字环绕效果。而这种文字环绕,主要指的就 是文字环绕图片显示的效果。浮动的特性
:所谓包裹性,由
包裹
和自适应性
两部分组成。200px
,浮动元素子元素是一个128px
宽度的图片, 则此时浮动元素宽度表现为包裹
,就是里面图片的宽度128px
。128px
宽度的图片,还有一大波普通的文字,则此时浮动元素宽度就自适应父元素的200px
宽度,最终的宽度表现也是200px
。块状化的意思是,元素一旦
float
的属性值不为none
,则其display
计算值就是block
或者table
。ps:格式化上下文将在另一篇文章详细分析
浮动的作用机制
在了解浮动作用机制之前,我们首先需要了解两个和
float
相关的术语,一是浮动锚点
(float anchor),二是浮动参考
(float reference)。浮动锚点
:是float
元素所在的“流”中的一个点,这个点本身并不浮动,就表现而言更像一个没有margin
、border
和padding
的空的内联元素。浮动参考
:指的是浮动元素对齐参考的实体。下面我们用简单的例子来理解这两个概念:
效果图:
相信大家看一眼代码和效果图应该也没啥疑问了,感性认知这样写就会出现这样的效果,但是如果我问大家具体的作用机制是什么,恐怕鲜有人能回答出来。
通过最简单的例子来理解透彻背后的作用机制,相信是每个人学习的目标跟重点了,现在让我们了解下浮动的作用机制:
浮动参考
理解为行框盒子
,浮动元素在当前行框盒子
内定位。而每一个内联元素都有一个行框盒子
。行框盒子
,而更多
是在文字最后,位于第二行。上面设置了float:right
的a
元素是相对于第二行的行框盒子
对齐的, 然后向右浮动。float
元素前后全是块元素,那根本没有行框盒子
,但是奇怪的是更多
两字自己跑到第三行。何来的对齐说法?这里就涉及前面提到的两个概念中的浮动锚点
了。浮动锚点
其作用可以理解为产生行框盒子
,因为浮动锚点
表现如同一个空的内联元素,有内联元素自然就有行框盒子
,于是,float
元素对齐的参考实体行框盒子
对于块状元素也同样适用了,只不过这个行框盒子
由于没有任何内容,所以无尺寸,看不见也摸不着罢了。clear属性是什么?
CSS
有一个专门用来处理float
属性带来的高度塌陷等问题的属性,这个属性就是clear
。其语法如下:注意
:clear:left
或者clear:right
起作用的地方,一定可以使用clear:both
替换!所以我们平时看到的都是clear:both
这个声明比较多。clear
属性只有块级元素才有效的,而::after
等伪元素默认都是内联水平,这就是借助伪元素清除浮动影响时需要设置display
属性值的原因。清除浮动
方式1:利用伪元素(clearfix)清浮动
HTML
结构如下,在父div
上再添加一个clearfix
类:样式应用如下:
给浮动元素的父容器添加一个
clearfix
,然后给这个class添加一个:after伪元素,实现元素末尾添加一个看不见的块元素来清理浮动。这是通用的清理浮动方案,推荐使用。方式2:利用clear:both清浮动
通过在父元素最后添加一个
div
标签,并且给他添加clear:both
属性值。需要注意在父级元素末尾添加的元素必须是一个块级元素,否则无法撑起父级元素高度。样式应用如下:
方式3:利用br标签清浮动
HTML
结构中,在父元素里面最后加入br
标签,并且添加clear=“all”
属性值样式应用如下:
方式4:利用overflow:hidden清浮动
这种方式让父容器形成了
BFC
(块级格式上下文),而BFC
可以包含浮动,通常用来解决浮动父元素高度坍塌的问题。样式应用如下:
这里可以给父元素设置
overflow:auto
也可以,但是为了兼容IE
最好使用overflow:hidden
。注意
:还有一种是直接给父元素设置高度height
,但是实际使用不大可能给所有的盒子加高度,也不推荐使用,知道有这种方式即可。如果感兴趣可以去查阅了解即可。最后
希望本文对你的学习有所帮助,如果喜欢的话,欢迎点赞、关注一波。大家加油!
更多优质文章可以访问GitHub博客,欢迎帅哥美女前来Star!!!
相关文章
The text was updated successfully, but these errors were encountered: