当前位置: 移动技术网 > IT编程>网页制作>CSS > 【笔记】CSS浮动的超详细介绍

【笔记】CSS浮动的超详细介绍

2020年07月07日  | 移动技术网IT编程  | 我要评论

为什么需要浮动

问题一:如何让三个div盒子放在同一行显示?
虽然转换为行内块元素可以实现在一行显示,但是他们之间会有大的空白缝隙。不知道缝隙大小,影响布局,这个问题又该如何拒绝。

问题二:如何让两个盒子实现一个左对齐,一个右对齐

总结: 有很多的布局效果标准流没有办法完成,此时就需要利用浮动完成布局。因为浮动可以改变元素标签默认的排列方式.

浮动最典型的应用: 可以让多个块级元素一行内排列显示。

如何添加浮动

float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。

语法:
选择器{ float : 属性值; }

属性值 描述
none 元素不浮动(默认值)
left 元素向左浮动
right 元素向右浮动

案例:

<style>
    .first {
        float: left;
        width: 100px;
        height: 100px;
        background-color: pink;
    }
    .second {
        float: right;
        width: 100px;
        height: 100px;
        background-color: blue;
    }
</style>

<body>
<div class="first"></div>
<div class="second"></div>
</body>
  • 如果两个盒子都是添加左浮动float: left;,则两个盒子会一起移到左边,第二个盒子紧贴着第一个盒子
    俩左浮动

  • 如果第一个盒子左浮动float: left;,第二个盒子右浮动float: left;。则会各自贴着浮动框的左边缘和右边缘
    一左浮动·,一右浮动

浮动有什么特性

1. 浮动元素会脱离标准流

  • 脱离标准普通流的控制(浮)移动到指定位置, (俗称脱标)
  • 浮动的盒子不再保留原先的位置
    即如果A盒子添加浮动效果,B盒子没有添加浮动。则A浮动起来不占用原来位置,B盒子就会跑到A盒子的位置上去,如图示:
    脱标

2. 浮动的元素会一行内显示并且元素顶部对齐

  • 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列。

注意: 浮动的元素是互相贴靠在一起的(不会有缝隙) , 如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐

3. 浮动的元素会具有行内块元素的特性.

  • 如果行内元素有了浮动,则不需要转换块级或行内块元素就可以直接给高度和宽度
span{
      float: left;/*span 添加浮动之后可以设置宽和高*/
      width: 50px;
      height: 50px;
 }
  • 如果块级盒子没有设置宽度 ,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定

浮动布局注意点

  • 浮动和标准流的父盒子搭配。
    先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。

  • 一个元素浮动了,理论上其余的兄弟元素也要浮动
    一个盒子里面有多个子盒子,如果其中一个盒子浮动了, 那么其他兄弟元素也应该浮动,以防引起脱标问题。
    浮动和标准流的父盒子搭配
    注意: 浮动的盒子只会影响浮动盒子后面的标准流不会影响前面的标准流

为什么要清除浮动

前面讲的浮动元素有一个标准流的父元素,都是有高度的。但是,所有的父盒子都必须有高度吗?

  • 由于很多情况下父级盒子不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子。
    清除浮动原因
  • 所以理想中的状态应该是,让子盒子撑开,父盒子有多少子盒子,我父盒子就有多高。
清除浮动本质
  • 清除浮动的本质是清除浮动元素造成的影响
  • 如果父盒子本身有高度 ,则不需要清除浮动
  • 清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了

如何清除浮动

语法选择器{ clear: 属性值; }

属性值 描述
left 清除左侧浮动的影响
right 清除右侧浮动的影响
both 同时清除左右两侧浮动的影响

清除浮动的策略是: 闭合浮动

清除浮动有哪些方法

  1. 额外标签法也称为隔墙法,是W3C推荐的做法。
    额外标签法会在浮动元素末尾添加一个空的标签
    例如<div style=" clear.both" > </div> ,或者其他标签(如<br/>等)
    注意: 要求这个新的空标签必须是块级元素

  2. 父级添加overflow属性
    可以给父级添加overflow属性,将其属性值设置为hidden、autoscroll。注意是给父元素添加代码!

  3. 父级添加after伪元素

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

after伪元素是在我们父盒子后面添加了一个新盒子,这个新盒子可以清除我们的浮动。在实际使用时,可以直接把以代码复制过去,然后哪个父盒子需要清除浮动,就给那个父盒子添加个类名clearfix,如<div class="clearfix"></div>

  1. 父级添加双伪元素
.clearfix:before,.clearfix:after {
    content:"";
    display: table;
}
.clearfix:after {
    clear:both;
}
. clearfix {
    *zoom:1;

.clearfix:before, .clearfix:after是给父盒子前后各添加一个新盒子来清除浮动。实际使用时,可以直接把以代码复制过去,然后哪个父盒子需要清除浮动,就给那个父盒子添加个类名clearfix。

本文地址:https://blog.csdn.net/wutong_jun/article/details/107130115

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网