zoukankan      html  css  js  c++  java
  • css中div高度自适应

    高度的自适应(父div高度随子div的高度改变而改变)

    1、如果父div不定义height、子div均为标准流的时候,父div的height随内容的变化而变化,实现父div高度随子div的高度改变而改变。

    <style type="text/css">
          #aa{min-height: 1em;}
          #bb{height: 55px;}
          #cc{height: 66px;}
     </style>
     
    <div id="aa">父div
          <div id="bb">子div</div>
          <div id="cc">子div</div>
     </div>

    2、如果子div使用了float属性,此时已经脱离标准流,父div不会随内容的高度变化而变化,解决的办法是对父元素加

    <style>
    aa{overflow:auto;}
    </style>

    还可以清除浮动也能解决问题,如下

    2、如果子div使用了float属性,此时已经脱离标准流,父div不会随内容的高度变化而变化,解决的办法是在浮动的div下面,加一个空div,设置clear属性both

    <style type="text/css">
          #aa{min-height: 1em;}
          #bb{height: 55px; float: left;}
          #cc{height: 66px; float:right;}
     </style>
     
    <div id="aa">父div
          <div id="bb">子div</div>
          <div id="cc">子div</div>
          <div style="clear:both"></div>
     </div>

    可以使用伪列CSS实现

    /*写css 时总为浮动而烦恼,如果用了浮动,浮动的父层不会跟着浮动框的高度增加而增加,在Firefox等符合W3C标准的浏览器中,如果有一个DIV作为外部容器,内部的DIV如果设置了float样式,则外部的容器DIV因为内部没有clear,导致不能被撑开。这个时候我们可以写个class 比如clearfix清除浮动*/
    
    .clearfix:after {
      content: " ";
      display: block;
      clear: both;
      height: 0;
    }
    .clearfix {
      zoom: 1;
    }
    <div class="clearfix">
      <div class="floated"></div>
    </div>
    .clearfix:after {       
        content: ".";     /*内容为“.”就是一个英文的句号而已。也可以不写。*/
        display: block;   /*加入的这个元素转换为块级元素。*/
        clear: both;     /*清除左右两边浮动。*/
        visibility: hidden;      /*可见度设为隐藏。注意它和display:none;是有区别的。visibility:hidden;仍然占据空间,只是看不到而已;*/
        line-height: 0;    /*行高为0;*/
        height: 0;     /*高度为0;*/
        font-size:0;    /*字体大小为0;*/
    }
    
    .clearfix { *zoom:1;}   /*这是针对于IE6的,因为IE6不支持:after伪类,这个神奇的zoom:1让IE6的元素可以清除浮动来包裹内部元素。*/
    /* 上面的代码就是.clearfix的定义和应用,简单的说下.clearfix的原理:
    
    1、在IE6, 7下zoom: 1会触发hasLayout,从而使元素闭合内部的浮动。
    
    2、在标准浏览器下,.clearfix:after这个伪类会在应用到.clearfix的元素后面插入一个clear: both的块级元素,从而达到清除浮动的作用。
    
    3、在需要清除浮动的时候,只要写一个.clearfix就行了,然后在需要清浮动的元素中 添加clearfix类名就好了。
    
    */

    示例

    <html > 
    <head> 
    <title> css用clearfix清除浮动实例</title> 
    <meta name="generator" content="editplus" /> 
    <meta name="author" content="" /> 
    <meta name="keywords" content="" /> 
    <meta name="description" content="" /> 
    </head> 
    <body> 
    <style type="text/css"> 
    /*所有主流浏览器都支持 :after 伪元素。*/ 
    .clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden} 
    .clearfix{*+height:1%;}/*不知道有什么用处,不加ie7也没有问题*/ 
    .box{ background:#111;width:500px; position:relative;} 
    .l{float:left; background:#333;width:200px; height:100px;} 
    .r{float:right;background:#666;width:200px; height:200px;} 
    .s{width:100px; height:100px;background:#999;position:absolute;right:-50px;;} 
    </style> 
    <div class="box clearfix"> 
    <div class="l">left</div> 
    <div class="r">right</div> 
    <div class="s">absolute</div> 
    </div> 
    </body> 
    </html> 
  • 相关阅读:
    winform+c#之窗体之间的传值 Virus
    ASP.NET 2.0 利用 checkbox获得选中行的行号, 在footer中显示 Virus
    .NET中的winform的listview控件 Virus
    我的书橱
    Expert .NET 2.0 IL Assembler·译者序一 写在一稿完成之即
    Verbal Description of Custom Attribute Value
    AddressOfCallBacks in TLS
    下一阶段Schedule
    2008 Oct MVP OpenDay 第二天 博客园聚会
    2008 Oct MVP OpenDay 第二天 颁奖·讲座·晚会
  • 原文地址:https://www.cnblogs.com/fenglie/p/5127748.html
Copyright © 2011-2022 走看看