9.css浮动

1 浮动(float)

1.1 定义

float 属性定义元素向哪个⽅向浮动。之前这个属性应⽤于图像,使⽂本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会⽣成⼀个块级框,⽽不论它本身是何种元素。 取值:

  • none 默认值,不浮动
  • left 左浮动
  • right 右浮动

1.2 用法

li {
    float:left;
}

横向排列布局

<style>
  div{
    width: 100px;
    height: 100px;
    float: left;
  }
  .one{
    background-color: red;
  }
  .two{
    background-color: green;
  }
  .thr{
    background-color: blue;
  }
</style>
<div class="one"></div>
<div class="two"></div>
<div class="thr"></div>

左右排列布局

<style> 
  div{
    width: 100px;
    height: 100px;
  }
  .one{
    background-color: red;
    float: left;
  }
  .two{
    background-color: green;
    float: right;
  }
  .thr{
    background-color: blue;
    float: left;
  }
</style>
</head>
<body>
    <div class="one">one</div>
    <div class="two">two</div>
    <div class="thr">three</div>
</body>

1.3 特性

  • 浮动元素会去找离它最近的有浮动的元素进⾏贴边
  • 假如在⼀⾏之上只有极少的空间可供浮动元素,那么这个元素会跳⾄下⼀⾏
  • 右浮动会颠倒盒⼦顺序
  • ⾏内元素设置了浮动后,默认已转为块级元素,可以直接设置宽⾼,⽆需转换
  • 块级元素,如果没有设置宽⾼,浮动后, 会收缩到内容的⼤⼩
  • 浮动元素会脱离⽂档流,会压住下⼀个块元素,但不会压住其内容
<style>
    /* 特性1 特性2 */
    .box{
        width:500px;
    }
    .box-item{
        float:left;
        width:200px;
        height:200px;
        border:2px solid red;
    }
    /* 特性3 */
    .box-item{
        float:right;
        width:200px;
        height:200px;
        border:2px solid red;
    }
    /* 特性4 */
    .box-span{
        float:right;
        width:200px;
        height:200px;
        border:2px solid red;
    }
    /* 特性5 */
    .box-div{
        float:left;
    }
</style>
<div class="box">
    <div class="box-item">1</div>
    <div class="box-item">2</div>
    <div class="box-item">3</div>
    <div class="box-item">4</div>
    <span class="box-span">5</div>
    <div class="box-div">6</div>
</div>

1.4 清除浮动

1.4.1 父元素高度塌陷

⼦元素浮动,⽗元素没有设置⾼度,会出现⾼度撑不开的现象,称之为⽗元素⾼度塌陷

<style>
    .box {
        width:500px;
        border:2px solid black;
    }
    .box-item {
        float:left;
        width:200px;
        height:200px;
        border:2px solid red;
    }
</style>
<div class="box">
    <div class="box-item">1</div>
    <div class="box-item">2</div>
    <div class="box-item">3</div>
    <div class="box-item">4</div>
</div>
1.4.2 清浮动本质

元素浮动后会出现相对应的⻚⾯布局问题,清除浮动的本质是解决元素浮动后造成的⻚⾯布局的问题

1.4.3 常见的清除浮动方式
  • 加额外标签 浮动元素后⾯加⼀个空标签,设置样式 clear:both;,左右两侧均不允许浮动元素
  • 定⾼法 给浮动元素的⽗元素设置⾼度⼤于或等于最⾼的浮动元素的⾼度,⽤于⼩板块,⾼度可以写死的部分
  • ⽗元素添加 overflow:hidden 属性 利⽤ overflow:hidden 清除浮动时,⽗元素⾥⾯不能有定位超出的元素,如果有,超出的部分会被隐藏
  • 利⽤after伪元素清除浮动

注意: 项目中我们常⽤after伪元素清除浮动,因为它不会额外增加标签,⽽且不会出现因为⽤overflow:hidden超出的部分会被隐藏,⽗元素⾼度也不⽤写死,我们只要在⻚⾯写⼀次清浮动的代码,在需要清浮动的位置加上 clearfix 类名就可以了

<style>
    /* 方法一: 浮动元素后⾯加⼀个空标签,设置样式 clear:both; */ 
    .box {
        width:500px;
        border:2px solid black;
    }
    .box-item {
        float:left;
        width:200px;
        height:200px;
        border:2px solid red;
    }
    .clear{
        clear:both;
    }
</style>
<div class="box">
    <div class="box-item">1</div>
    <div class="box-item">2</div>
    <div class="box-item">3</div>
    <div class="box-item">4</div>
    <div class="clear"></div>
</div>
<style>
    /* 方法二:定⾼法 给浮动元素的⽗元素设置⾼度⼤于或等于最⾼的浮动元素的⾼度 */
    .box {
        width:500px;
        height:500px;
        border:2px solid black;
    }
    .box-item {
        float:left;
        width:200px;
        height:200px;
        border:2px solid red;
    }
</style>
<div class="box">
    <div class="box-item">1</div>
    <div class="box-item">2</div>
    <div class="box-item">3</div>
    <div class="box-item">4</div>
</div>
<style>
    /* 方法三: 给父级元素添加 overflow: hidden; */
    .box {
        width:500px;
        border:2px solid black;
        overflow:hidden;
    }
    .box-item {
        float:left;
        width:200px;
        height:200px;
        border:2px solid red;
    }
</style>
<div class="box">
    <div class="box-item">1</div>
    <div class="box-item">2</div>
    <div class="box-item">3</div>
    <div class="box-item">4</div>
</div>
<style>    
  .box {        
    width:500px;        
    border:2px solid black;    
  }    
  .box-item {        
    float:left;        
    width:200px;        
    height:200px;        
    border:2px solid red;    
  }    
  .clearfix::after {        
    content: "";
    clear: both;
    display: block;
  }
</style>
<div class="box clearfix">    
  <div class="box-item">1</div>    
  <div class="box-item">2</div>    
  <div class="box-item">3</div>    
  <div class="box-item">4</div>
</div>
1.4.4 清除浮动注意事项
  • 同级的元素,要么全部浮动,要么全部不浮动
  • ⼦元素浮动,⽗元素去清除浮动,如果⽗元素也浮动,寻找距离最近的没有浮动的祖先元素去做清除浮动的操作
  • ⽗元素有绝对定位的不需要清除浮动
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>