前戏

前面我们学习了CSS相关的知识,现在试想一下,如果我们想把两个div放在一行显示,该怎么处理?前面也说过,div是块级标签,默认占一行,这时候如果想要达成效果,那就要用到float了

float

float中的四个参数

float:left      左浮动

float:right     右浮动

float:none      不浮动

float:inherit   继承 

先来看一下不加float的效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
         *{padding: 0;margin: 0}
        div{height:100px;width:100px;background: red}
     </style>
</head>
<body>
        <div>1</div>
        <div>2</div>
</body>
</html>
left
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
         *{padding: 0;margin: 0}
        div{height:100px;width:100px;background: red;
            text-align: center;
         line-height: 100px;}

         div{float: left;
            margin-right: 10px;
         }

     </style>
</head>
<body>
        <div class="c1">1</div>
        <div class="c2">2</div>
</body>
</html>
right
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
         *{padding: 0;margin: 0}
        div{height:100px;width:100px;background: red;
            text-align: center;
         line-height: 100px;}

         div{float: right;
            margin-right: 10px;
         }

     </style>
</head>
<body>
        <div class="c1">1</div>
        <div class="c2">2</div>
</body>
</html>

注意:float:right时,两个div的顺序就反过来了,因为先把c1的浮动到最右边,然后浮动c2

none
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
         *{padding: 0;margin: 0}
        div{height:100px;width:100px;background: red;
            text-align: center;
         line-height: 100px;}

         div{float: none;
            margin-right: 10px;
         }

     </style>
</head>
<body>
        <div class="c1">1</div>
        <div class="c2">2</div>
</body>
</html>

none就是不浮动,就和默认的div一样的效果

inherit
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
         *{padding: 0;margin: 0}
        div{height:100px;width:100px;background: red;
            text-align: center;
         line-height: 100px;}

         .test{float: right;
            height: 200px;width: 200px;background: green;
         }
         .c1,.c2{
             float: inherit;
            margin-top:10px; }

     </style>
</head>
<body>
    <div class="test">
        <div class="c1">1</div>
        <div class="c2">2</div>
    </div>
</body>
</html>

代码解释:

我们给class为c1和c2的加上了float: inherit;给它的父元素加上了float: right,所以父元素会像右浮动,但是因为c1和c2继承了父元素的浮动,所以也会像右浮动,解释完毕。

float的副作用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
            .c1,.c2{background: red;float: left;height: 30px;width: 20px;margin-right: 10px}
            .c3{background: green;height: 100px;width: 100px;}
     </style>
</head>
<body>
    <div class="test">
        <div class="c1">1</div>
        <div class="c2">2</div>
        <div class="c3"></div>

    </div>
</body>
</html>

我们可以看到,上面绿色的框产生了易位,原本是要想绿色的框在红色的下面显示,这就是浮动的副作用之一

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
            .test{border: 1px solid red;}
            .c1,.c2{background: red;float: left;height: 30px;width: 20px;
                margin-right: 10px}
            .c3{background: green;height: 100px;width: 100px;}
     </style>
</head>
<body>
    <div class="test">
        <div class="c1">1</div>
        <div class="c2">2</div>
<!--        <div class="c3"></div>-->

    </div>
</body>
</html>

如果我们给上面的代码没有添加float,则子元素会把父元素的高度撑起来,加上float之后,父元素的高度就成了一条线。这也是float的副作用

清除浮动的副作用

清除浮动的副作用有四种方法

1. 手动给父元素设置高度

2.通过clear清除内部和外部浮动

3.给父元素添加overfloat属性并结合zoom:1使用

4.给父元素添加浮动

 手动给父元素设置高度

我们先来看一下副作用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
     <style>
            .test{border: 1px solid red;width:100px;}
            .c1,.c2{background: red;float: left;height: 30px;width: 20px;
                margin-right: 10px}
     </style>
</head>
<body>
    <div class="test">
        <div class="c1">1</div>
        <div class="c2">2</div>

    </div>
</body>
</html>
View Code

相关文章:

  • 2022-02-12
  • 2021-10-12
  • 2021-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-21
  • 2021-11-22
  • 2021-12-25
猜你喜欢
  • 2021-08-07
  • 2021-07-01
  • 2021-07-13
  • 2021-05-12
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案