CSS 浮动元素对块级元素和行内元素的影响

前言:我们可能听说过,float元素是脱离了文档流的元素,其他元素将无视它的存在。但当我们实际应用中,实际效果并不完全是这样的。

float

float设计之初,主要是为了解决文章配图时的布局问题。如下图
float布局
HTML代码

<body>
	<img src="css.png" alt="CSS-icon">
	<article>
		CSS不能单独使用,必须与HTML或XML一起协同工作,为HTML或XML起装饰作用。
		本文主要介绍用于装饰HTML网页的CSS技术。
		其中HTML负责确定网页中有哪些内容,CSS确定以何种外观(大小、粗细、颜色、对齐和位置)展现这些元素。
		CSS可以用于设定页面布局、设定页面元素样式、设定适用于所有网页的全局样式。
		CSS可以零散地直接添加在要应用样式的网页元素上,也可以集中化内置于网页、链接式引入网页以及导入式引入网页。
	</article>
</body>

CSS代码

img{
	float: left;
	width: 100px;
	height: 60px;
	margin: 10px;
	border: 1px solid;
}
article{
	background-color: #eeeeee;
	padding: 10px;
	width: 500px;
	height: 180px;
}

从上图可以看到,<img>浮动后,<img>的下面有<article>的背景颜色,这说明<article>确实忽略了<img>的存在。但同时我们也注意到,<article中的文字并没有忽略<img>的存在,而是绕开<img>进行排列,这说明浮动元素可能对块级元素和行内元素有不同的处理方式,下面分开讨论一下。

块级元素
对于块级元素而言,他们会忽视浮动元素的存在,根据上一个非浮动元素或是父元素来进行自己的定位。如图中<article>略过<img>,而根据<body>来进行自己的定位,如果<article>前还有一个非浮动元素,则会根据该元素进行定位,如下图。
在这里插入图片描述
HTML代码

<body>
	<img src="css.png" alt="CSS-icon">
	<div id="block"></div>
	<article>
		CSS不能单独使用,必须与HTML或XML一起协同工作,为HTML或XML起装饰作用。
		本文主要介绍用于装饰HTML网页的CSS技术。
		其中HTML负责确定网页中有哪些内容,CSS确定以何种外观(大小、粗细、颜色、对齐和位置)展现这些元素。
		CSS可以用于设定页面布局、设定页面元素样式、设定适用于所有网页的全局样式。
		CSS可以零散地直接添加在要应用样式的网页元素上,也可以集中化内置于网页、链接式引入网页以及导入式引入网页。
	</article>
	</div>
</body>

CSS代码

#block{
	width: 200px;
	height: 200px;
	background-color: #FAEBD7;
}

行内元素
行内元素与块级元素不同,不能设置宽高。行内元素实际上受制于行框,而这个行框是不会忽视浮动元素的存在。文字就属于行内元素,或者说,<article>里面的文字我们可以认为是被包裹在一个<span>里的,而<span>是一个行内元素。下面我们调用控制台查看一下行内元素的行框的宽度。
在这里插入图片描述
注:这里为了更准确显示每行行框的尺寸,每句分别用<span>包裹。如果是整段包裹,在显示行内元素宽度时,会显示最宽的一行的行框的宽度。
从图中展示的行框的宽度即可印证行内元素不会忽视浮动元素。

浮动会让元素脱离文档流,不再影响不浮动的元素。实际上,并不完全如此。如果浮动的元素后面有一个文档流中的元素,那么这个元素的框会表现得想浮动根本不存在一样。但是,框的文本内容会受到浮动元素的影响,会移动以留出空间。用技术术语来说,浮动元素旁边的行框被缩短,从而给浮动元素留出空间,因此行框围绕浮动框。实际上,创建浮动框使文本可以围绕图像。——《精通CSS:高级Web标准解决方案(第2版)》

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值