元素的浮动属性float,元素的浮动属性float文字和图片
浮动(float)
网页布局的核心,就是用CSS来摆放盒子位置。如何把盒子摆放到合适的位置?
CSS的定位机制有3种: 普通流(标准流) 、 浮动 和 定位 。
html语言当中另外一个相当重要的概念—— 标准流 !或者普通流。普通流实际上就是一个网页内标签元素正常 从上到下,从左到右排列 顺序的意思,比如块级元素会独占一行,行内元素会按顺序依次前后排列;按照这种大前提的布局排列之下绝对不会出现例外的情况叫做普通流布局。
浮动最早是用来控制图片,以便达到 其他元素(特别是文字)实现“环绕”图片 的效果。
后来发现浮动有个很有意思的事情:就是 让任何盒子可以一行排列 ,因此我们就慢慢的偏离主题,用浮动的特性来布局了。(CSS3已经实现真正意义上的网页布局,具体CSS3会详细解释)
元素的浮动是指 设置了浮动属性的元素会脱离标准普通流的控制,移动到其父元素中指定位置的过程 。
浮动脱离标准流, 不占位置 , 会影响标准流 。浮动 只有左右浮动 。
所以,一个父盒子里面的子盒子,如果其中一个子级有浮动的,则其他子级都需要浮动。这样才能一行对齐显示。
阅读报纸时容易发现,虽然报纸中的内容很多,但是经过合理地排版,版面依然清晰、易读。同样,在制作网页时,要想使页面结构清晰、有条理,也需要对网页进行“排版”。
“版心”(可视区) 是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px、1200px等。
为了提高网页制作的效率,布局时通常需要遵守一定的布局流程,具体如下:
浮动本质是用来做一些文字混排效果的,但是被我们拿来做布局用,则会有很多的问题出现。
由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响,为了解决这些问题,此时就需要在该元素中清除浮动。
准确地说,并不是清除浮动,而是 清除浮动后造成的影响 。如果浮动一开始就是一个美丽的错误,那么请用正确的方法挽救它。
清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。
其实本质叫做 闭合 浮动更好一些, 记住,清除浮动就是把浮动的盒子圈到里面,让父盒子闭合出口和入口不让他们出来影响其他元素。
可以通过 触发BFC 的方式,可以实现清除浮动效果。(BFC后面讲解)
:after 方式为空元素的升级版,好处是不用单独加标签了。
小问题:
CSS——知识点补充(四)元素的浮动属性
通过浮动可以使一个元素向其父元素的左侧或右侧移动,我们使用float属性来设置于元素的浮动
注意,元素设置浮动以后,水平布局的等式便不需要强制成立 。元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,所以元素下边的还在文档流中的元素会自动向上移动
(2)设置浮动以后元素会向父元素的左侧或右侧移动,
(3)浮动元素默认不会从父元素中移出
(4)浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
(5)如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
(6)浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高
实际上,浮动属性一开始创建出来的原因就是为了实现文字环绕的效果的,只是后来大家发现利用浮动可以很好地处理页面布局的问题,所以现在更多时候是利用它来做布局的功能。。。
我们知道,块元素和行内元素在文档流中都有着各自的布局特点,比如块元素独占一行等。那么如果脱离了文档流,块元素和行内元素分别会有什么样的影响呢?
1、块元素不在独占页面的一行
2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开
1、行内元素脱高文档流以后会变成块元素,特点和块元素一样
也就是说,一旦脱离文档流以后,我们就不需要再区分块和行内了。
我们可以看一下下面的案例,在没有使用 clear 属性前,对于两个兄弟元素,如果前者设置为浮动,那么由于其脱离了文档流,那么后者就会移动到前者原先的位置上。如果我们不想元素受到其他元素的浮动影响,那么就可以通过设置 clear 属性来解决这个问题。
clear底层实现的原理是:设置清除浮动以后,浏览器会自动为元素添加一个margin,以使其位置不受其他元素的影响
我们可以看下面这个案例,父 div 元素中包含着一个设置为浮动的 div 子元素,由于子元素设置为浮动,脱离了文档流,且父元素中没有指定高度,所以此时一旦子元素脱离了文档流后,就缺少了支撑起父元素高度的元素。相比于这样的效果,我们更希望即使子元素设置为浮动,但父元素依然可以包裹住子元素(或者说是有着子元素的高度,不至于塌陷)。
BFC(Block Formatting Context)块级格式化环境
BFC是一个css中的一个隐含的属性, 当元素开启BFC后,该元素会变成一个独立的布局区域 。可以理解为,此时元素内的后代元素不会再把其他样式传递到外面了。
元素开启BFC后的特点;
1.开启BFC的元素不会被浮动元素所覆盖
2.开启BFC的元素子元素和父元素外边距不会重叠
3.开启BFC的元素可以包含浮动的子元素
可以通过一些特殊方式来开启元素的BFC
1、设置元素的浮动(不推荐)
2、将元素设置为行内块元素(不推荐)
需要注意的是,虽然开启元素的BFC环境可以解决高度塌陷的问题,但是这还不是最完美的解决方案,在某些特殊的环境下还是会有问题。
我们回顾一下,高度塌陷产生的原因是什么?主要是因为父元素没有设置高度,所以父元素的高度由子元素的高度决定,一旦子元素设置为浮动后脱离了文档流,那么此时父元素就会由于没有子元素的支撑而塌陷。
那么如果我们能够实现,手动在浮动的子元素后面放入一个无内容的块元素,且清除其受到的 float 影响,那么此时这个块元素就会落在浮动的元素下方,又由于(自身没有设置高度的)父元素的高度由子元素的高度决定,所以此时父元素因为要包裹新增的无内容块元素,也就自然可以包裹浮动的元素了。
所谓的clearfix样式,其实核心就是在第二种解决方式的基础上,对样式做一个进一步的封装,使其既可以解决高度塌陷的问题,还可以解决父子元素外边距重叠的问题。
CSS中float有什么用?浮动是什么意思?
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
摘自:
float是什么意思
float是什么意思
float,css的一种属性,主要属性值为:left(左浮动)、none(不浮动)、right(右浮动)、inherit(继承父元素浮动),多用于网页排版。
FLOAT是来自香港的潮流服饰品牌,始创于2008年,专注于设计高机动性能的潮流服饰,并融合运动、团队精神、街头文化、现实批判主义等元素,以其别树一帜的简约多变风格著称。
float浮动元素
可以用width来设置浮动元素的宽度;
在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
float浮动元素会脱离div块级元素范围的限制,类似于display:inline/block,float范围与其定义的文本 或图片的大小一致(即其取决与字体的font-size或图片的heigh、width)类似于bolder范围。
例:
其常用值 inherit、right、left
——inherit是继承其父级对其定义的值例如
div style="float:right"
div style="float:inherit"
/div
/div
第二个div标签中的float就是继承第一个《div》中的值right
——right、left
float属性怎么用,怎么清楚浮动
浮动
语法:float:left | right | none
特点:
浮动的元素不占位置,脱离了标准文档流(页面中标签的默认显示方式就是标准流)
浮动的元素可以实现元素的模式互换
同方向浮动的元素会顺次排列
浮动的元素顶端对齐
默认情况下,子元素浮动只会在父元素的区域之内(除非你刻意用margin把子元素弄出去)
父元素浮动会把子元素一起带跑
浮动前面有标准流,会漂浮到标准流的后面
值得注意的是:文字不会受浮动影响
利用浮动可以实现:
制作网页导航(块级元素在一行上显示)
制作网页左右布局(块级元素在一行上显示)
副作用:当所有的子元素都设置了浮动之后,不占据位置,从而导致父元素没有高度,这时候就需要清除浮动。
清除浮动就是消除浮动的影响
方式:
直接给父元素设置高度
给父元素设置overflow:hidden (这里面涉及到BFC)
使用clear:left | right | both
Clear:可以认为设置了clear属性的元素,不能被浮动的元素覆盖
Left:不允许左边有浮动元素
Right:不允许右边有浮动元素
Both:两边都不允许
用clear 属性清除浮动得到的效果不会涉及到别的元素,只对当前设置元素生效
给父元素添加一个子元素 div ,放在最后面,设置clear:both;
使用单伪元素清除浮动(这个方法是必须掌握的)
.clearfix:after{
Content:””;(这个属性必须有)
Clear:both;
Display:block;
Visibility:hidden;
Height:0;
Line-height:0; }
Overflow的用法:
Overflow:visible 默认值超出部分可见
Overflow:hidden 将超出部分隐藏
Overflow:scroll 添加滚动条
Overflow:auto 自动设置滚动条