• 浅析应用伪类after闭合浮动


      很多人都已经习惯称之为清除浮动,但是确切地来说是不准确的。

      1> 清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left | right | both | none;
      2> 闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。

      通过上图实例发现,其实我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,在footer上设置clear:both清除浮动并不能解决warp高度塌陷的问题。  

      故:用闭合浮动比清除浮动更加严谨,所以应准确称之为:闭合浮动。

      清理浮动的方式有很多,总结如下——

      1> 添加额外标签(如<div style="clear: both;"></div>)
      2> 使用 br标签和其自身的 html属性(如<br clear="all">)
      3> 父元素设置 overflow:hidden;(或overflow:auto;)及_zoom: 1;
      4> 父元素也设置浮动
      5> 父元素设置display:table
      6> 父元素使用:after 伪元素

      这六种方式方式各有优缺点,在此就不在说明,相对而言,第6种方式(即after伪元素闭合浮动)无疑是比较好的解决方案了,它的实现代码如下——

     1 /* For modern browsers */
     2 .clearfix:after {
     3     content: ".";           /* 这里的content内容是任意的 */
     4     display: block;      /* 使生成的元素以块级元素显示,占满剩余空间 */
     5     height: 0;              /* 避免生成内容破坏原有布局的高度 */
     6     visibility: hidden;     /* 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互 */
     7     clear: both;            /* 此行代码才真正做了浮动清除,其他代码无非都是为了隐藏掉content生成的内容 */
     8 }
     9 /* For IE6/IE7 */
    10 .clearfix {
    11     /* 触发IE6/IE7的布局:可以包含内部浮动的元素 */
    12     *zoom: 1;
    13     /* 当然还有其他触发IE6/IE7的布局的方式 */
    14     /* 比较推荐:*display: inline-block; */
    15 }
    16 .clearfix {
    17     /* 如果触发IE6/IE7布局的方式用的是display: inline-block;的方式,那么可千万别忘了加了这句代码 */
    18     display: block;
    19     /* 一般闭合浮动均已块级元素呈现,故建议,不管是否用的display: inline-block;的方式触发IE6/IE7的布局,均把这句代码加上 */
    20 }

      精益求精方案一——

     1 /* For modern browsers */        
     2 .clearfix:after {
     3     content: "\200B";    /* Unicode字符里有一个"零宽度空格",即U+200B,此时可以省略掉 visibility:hidden了 */
     4     display: block;
     5     height: 0;
     6     clear: both;
     7 }
     8 /* For IE6/IE7 */
     9 .clearfix {
    10     *zoom: 1;
    11 }
    12 /* 块级呈现 */
    13 .clearfix {
    14     display: block;
    15 }

      精益求精方案二——

     1 /* For modern browsers */
     2 .clearfix:before,
     3 .clearfix:after {
     4     content:"";
     5     display:table;
     6 }
     7 .clearfix:after { 
     8     clear:both; 
     9 }
    10 /* For IE6/IE7 */
    11 .clearfix { 
    12     zoom:1; 
    13 }
    14 /* 块级显示 */
    15 .clearfix {
    16     display: block;
    17 }

     

  • 相关阅读:
    js根据年月获取当月最后一天
    skywalking 执行流程 日志放在哪里 MySQL或者ES
    SpringCloud微服务间安全调用实现(SpringSecurity+Oauth2+Jwt)
    内存泄露和内存溢出的区别
    Mybatis的执行流程
    Spring如何解决循环依赖
    Spring事务在哪几种情况下会失效?
    Spring Boot 中application.yml与bootstrap.yml的区别
    Nacos执行流程
    Gateway 如何解决跨域问题
  • 原文地址:https://www.cnblogs.com/jinguangguo/p/2749806.html
Copyright © 2020-2023  润新知