CSS进阶知识点——float浮动

65 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

原始作用

float浮动原本的作用是实现文字环绕效果。

在子元素全为行级元素的情况中,没有定高的父元素的高度是由行级元素中最高的决定的。

<style>
	img {
		width: 80px;
		height: 80px;
		border: 1px solid red;
	}
</style>

<body>
	<img src="c1.png" alt="">
	<div>1234567890</div>
</body>

image.png

想要实现文字环绕图片效果,将img图片添加浮动,此时图片脱离文档流,但是不会被无视,所以文字会环绕图片。

<style>
	img {
		width: 80px;
		height: 80px;
		border: 1px solid red;
                float: left;
	}
</style>

<body>
	<img src="c1.png" alt="">
	<div>1234567890</div>
</body>

image.png

浮动的应用场景

(1)浮动后面跟块级元素时:块级元素会无视浮动,直接排列,所以会重叠。

image.png

(2)浮动后面跟行级元素时:行级元素会避开浮动,所以文字环绕图片可以在图片样式中加入浮动。

image.png

(3)浮动的包裹性:效果类似display:inlineblock;,一旦让元素浮动起来,立刻会像inline元素一样产生包裹性,宽度会跟随内容自适应。

<div style="border: 2px solid red;">
    <img src="./images/2.jpg" width="150px" height="100px">
</div>
<div style="border: 2px solid green; float: left;">
    <img src="./images/2.jpg" width="150px" height="100px">
</div>

第一个父元素宽度100%,第二个父元素宽度和图片宽度一致。

image.png

(4)浮动的破坏性:父元素的高度塌陷(为了实现以前的文字环绕效果导致)。 \

注:JavaScript不能使用obj.style.float="left";写法。

IE浏览器:

obj.style.styleFloat = "left";

其他浏览器:

obj.style.cssFloat = "left";

建议:不要用浮动来堆砌布局。