front-end CSS(5) 浮动与清除浮动

传统网页布局的3种方式

也就是盒子如何排列,实际开发中,一个页面以下3种都会用到。

  • 标准
  • 浮动
  • 定位

标准

标签按照默认的方式进行排列

  • 块元素独占一行,从上到下进行排列
  • 行内元素从左到右排列,碰到父元素边缘自动换行

浮动

div {
	float: none | left | right;
}

如何实现2个div并排?

  <div class="left">left</div>
  <div class="right">right</div>

可以使用display:inline-block;但是中间多了一个空白空隙。不好控制。

.left,
.right {
	float: left;
}

如何实现2个盒子分别在左上角和右上角?

.left {
	float: left;
}
 .right {
	float: right;
 }
元素添加浮动后的特性

1. 脱离标准流,不再保留原来的位置
在这里插入图片描述

<div class="div01">div01</div>
<div class="div02">div02</div>
    <style>
        .div01 {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            float: left; 【浮动第一个div】
        }
        .div02 {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>

2. 多个div设置了浮动,根据上边沿对齐
浮动的元素是紧紧挨在一起的,中间不会有空隙。
如果父元素装不下这些浮动元素了,多出的盒子会另起一行对齐。
在这里插入图片描述
3. 任何元素都可以浮动,加了浮动后会具有类似行内块的特性
如果行内元素有了浮动,那么不需要设置display,直接设置高度和宽度会有效。
如果不设置宽度,那么这个盒子的宽度=里面内容的多少。【行内块元素特性】
在这里插入图片描述

浮动常与标准流一起使用

标准流,上下排列父元素。
浮动,左右排列子元素。
而且,其中一个盒子浮动了,其它的兄弟盒子也应该一起浮动。
浮动的盒子只影响后面的标准流,不影响前面的。----也就是说,第2个盒子设置了浮动,不影响第一个没设置浮动的盒子,只会影响第3个盒子。
在这里插入图片描述

常见的网页布局

在这里插入图片描述
在这里插入图片描述

清除浮动造成的影响

什么叫清除浮动?
就是浮动元素脱离标准流后造成的影响
原理
理想情况下,父元素的高度应该由子元素撑开,而不是直接给父元素一个高度。
但是子元素一旦浮动,父元素就失去高度,会变成0。当父级盒子高度=0,就会影响下面的标准流盒子。

  • 如果父元素有高度,则不需要清除浮动
  • 清除浮动后,父元素的高度将由子元素决定。

使用下面这个代码可以闭合浮动【让浮动只在父盒子内部进行影响,不影响父盒子外的其它元素】

 clear: left | right | both;
 在实际开发中,几乎只用 clear: both;

清除浮动的4种方法:

1. 额外标签法:
在全部的子元素后面增加一个空白盒子,相当于一堵墙,把所有子元素都关在了父盒子里。

<style>
.child{
	float: left;
   	}
.clear {
	clear: both;
	}
</style>
<div class="father">
	<div class="child"></div>
	<div class="child"></div>
	<div class="clear"></div>
</div>

缺点:需要增加额外的无意义标签,结构变差。另外这个新增的额外的标签必须是块元素。

2. 给父元素添加overflow

overflow: hidden;

缺点: 无法显示溢出的部分。

3. 给父盒子增加 :after伪元素
其实就是第一种方法----额外标签法的升级版本。不在HTML里增加一个无意义的div,而是通过CSS设置一个空白的块元素:

.clearfix:after {
	content: "";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}
.clearfix{ /* IE6,7 特有*/
	*zoom: 1;
}

优点:
没有增加标签,结构更简单。
缺点是需要照顾低版本浏览器。
代表网站:淘宝、百度、网易。

4. 双伪元素清除浮动:after, :before
相当于在子元素前后都建立了一堵墙。

.clearfix:before,
:after {
	content: "";
	display: table;
}
.clearfix:after { 
	clear: both;
}
.clearfix{ /* IE6,7 特有*/
	*zoom: 1;
}

优点:代码更简洁
缺点:需要照顾低版本的浏览器
代表网站:小米,腾讯等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值