• 谈谈CSS的浮动问题


    浮动的工作原理

    浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框则停留。

    浮动元素可能引起的问题

    1.父元素的高度无法被撑开,影响与父级元素同级的元素

    2.与浮动元素同级的非浮动元素会跟随其后

    3.若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面的显示结构

    清除浮动有什么解决办法?

    一般来说有三种办法。

    1.使用空标签清除浮动

    在所有浮动标签后面添加一个空标签并定义CSS属性  clear:both

    对比图:div未被撑开

    加个空标签就可以,弊端是增加了无语义标签

    <style type="text/css">
        html,body,div{ margin: 0;padding: 0;}
          .box{border: 1px solid #333;}
          p{border: 1px dotted #333;}
          .box img{float: left;}
          .box p{float: left;}
          .cb{clear: both;}
        </style>
    </head>
    
    <body>
    
    <div class="box">
    <img src="1.jpg" width="50px" height="50px">
        <p>one</p>
    <!--在这里增加    <div class="cb"></div> -->
    </div>
    </body>

    当然了,如果浮动元素的后边元素你不需要浮动,可以顺便给它加个clear:both ,这样也不错。

    2.使用overflow

    给包含浮动元素的父元素标签添加CSS属性,overflow:hidden or auto; zoom:1  ,其中zoom:1用于兼容IE6,目的是为了触发hasLayout

    3.使用after伪对象清除浮动。

    但该方法只适用于非IE浏览器,还要注意的是使用的时候要记得为需要清除浮动元素的伪对象设置height:0; 否则该对象会比实际高出若干像素。

    <head>
    <style>
    html,body,div{ margin: 0;padding: 0;} .box{border: 1px solid #333;} p{border: 1px dotted #333;} .box img{float: left;} .box p{float: left;} .cb{clear: both;} .clearfix{display: inline-block; /*zoom:1;*/ } /* for IE ; or use zoom:1 to trigger the hasLayout; */ .clearfix:after{content: "."; display: block; height: 0; visibility: hidden;clear: both;}
    </style> </head> <body> <div class="box clearfix"> <img src="1.jpg" width="50px" height="50px"> <p>one</p> </div> </body>

    4.就是给浮动元素的父元素也浮动起来,但这整体又浮动了所以不推荐~

    5.还有一种就是直接给浮动的元素添加属性  display:table;

    FF Chrome等支持,IE6/IE7测试显示不支持~ 所以还得触发hasLayout ,加上zoom:1  或者 display:inline-block 吧 

  • 相关阅读:
    人脸识别(Unseen Domains)
    人脸识别(Unseen Domains)
    人脸聚类
    人脸聚类
    人脸聚类
    人脸检测和识别以及检测中loss学习
    Embedding-based Retrieval in Facebook Search
    Spring Cloud Alibaba(1)---入门篇
    2020Android面经,历时一个半月,斩获3个大厂offer
    【算法总结】递归和非递归实现二叉树的先序,中序,后序遍历
  • 原文地址:https://www.cnblogs.com/imwtr/p/4340156.html
Copyright © 2020-2023  润新知