• HTML、CSS中浮动的影响及解决办法


      首先,什么叫做浮动?通常情况下,元素都是按默认文档流排列,而浮动则是让默认文档流下的元素漂浮起来水平排列。浮动排列顺序不会发生改变,默认时谁在第一位,浮动时便排在第一个。

      但是给元素设置浮动后会带来一些影响:

      (1)在父级没有给高度的情况下,子级浮动,父级会没有高度

      (2)行内元素浮动后可支持宽高

      (3)文本会给浮动元素让位,可以制作文本绕排结果

      举例:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                .clearfix{background-color: yellow;}
                .d1{width: 100px;height: 100px;background-color: cyan;}
                .d2{width: 100px;height: 100px;background-color: red;}
            </style>
        </head>
        <body>
            <div class="clearfix">
                <div class="d1">div1</div>
                <div class="d2">div2</div>
            </div>
        </body>
    </html>

    这是没有添加浮动的效果图

        

    接下来我们给div和div2添加一个左浮动,效果如下:

        

    此时我们会发现div1和div2已经左浮动,但是父级却没有了高度,这会影响我们的页面布局,此时我们需要解决浮动带来的这个影响,清除浮动,解决办法有多种:

      第一种:在父级内容后添加一个空的div,再添加 clear:both;(不推荐使用,会在页面上添加太多的无用标签,让页面复杂化)

      第二种:给父级设置  overflow:hidden;(不推荐使用,该属性与定位一起使用时会产生问题,会触发bfc,有兴趣的可以自己百度bfc)

      第三种:使用伪元素after(这个代码可以强记住)

          

               .clearfix:after{
                    content:"";
                    height: 0;
                    line-height: 0;
                    display: block;
                    visibility: hidden;
                    clear: both;
                }
                .clearfix{
                    /*针对IE678,其余浏览器可不写*/
                    zoom: 1;
                }                

      第四种:使用双伪元素:after和before

         

    .clearfix:after,.clearfix:before{
            content:"";
            display: table;
            clear: both;
        }

    以上四种方法清除浮动,推荐使用第三种,可以把那几行代码牢牢记住

    清除浮动带来的影响后,最终代码及效果如下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                .clearfix{background-color: yellow; }
                .d1{width: 100px;height: 100px;background-color: cyan;float: left;}
                .d2{width: 100px;height: 100px;background-color: red;float: left;}
                
                .clearfix:after{
                    content:"";
                    height: 0;
                    line-height: 0;
                    display: block;
                    visibility: hidden;
                    clear: both;
                }
                .clearfix{
                    zoom: 1;
                }
            </style>
        </head>
        <body>
            <div class="clearfix">
                <div class="d1">div1</div>
                <div class="d2">div2</div>
            </div>
        </body>
    </html>

  • 相关阅读:
    你想了解数据库吗,进来瞧一瞧吧,详细的数据库解读
    MySQL8.0-INFORMATION_SCHEMA增强
    工作总结:涉及数据库、软件测试等内容
    MySQL高级-MySQL锁
    年轻就该多尝试,教你20小时Get一项新技能
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    MySQL数据库高级操作(图文详解)
    JAVA RMI helloworld入门
    JAVA8 十大新特性详解
    Java 8 Lambda表达式探险
  • 原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10104372.html
Copyright © 2020-2023  润新知