• div 解决高度塌陷


    第一种方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8" />
     5         <title></title>
     6         <style type="text/css">
     7             
     8             .box1{
     9                 border: 10px red solid;
    10                 /*
    11                  * 根据W3C的标准,在页面中元素都一个隐含的属性叫做Block Formatting Context
    12                  *     简称BFC,该属性可以设置打开或者关闭,默认是关闭的。
    13                  * 当开启元素的BFC以后,元素将会具有如下的特性:
    14                  *     1.父元素的垂直外边距不会和子元素重叠    
    15                  *     2.开启BFC的元素不会被浮动元素所覆盖
    16                  *     3.开启BFC的元素可以包含浮动的子元素
    17                  * 
    18                  * 如何开启元素的BFC
    19                  *     1.设置元素浮动
    20                  *         - 使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失
    21                  *             而且使用这种方式也会导致下边的元素上移,不能解决问题
    22                  *     2.设置元素绝对定位
    23                  *     3.设置元素为inline-block
    24                  *         - 可以解决问题,但是会导致宽度丢失,不推荐使用这种方式
    25                  *     4.将元素的overflow设置为一个非visible的值
    26                  *     
    27                  * 推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式。    
    28                  */
    29                 
    30                 /*overflow: hidden;*/
    31                 
    32                 /*
    33                  *但是在IE6及以下的浏览器中并不支持BFC,所以使用这种方式不能兼容IE6。
    34                  * 在IE6中虽然没有BFC,但是具有另一个隐含的属性叫做hasLayout,
    35                  * 该属性的作用和BFC类似,所在IE6浏览器可以通过开hasLayout来解决该问题
    36                  * 开启方式很多,我们直接使用一种副作用最小的:
    37                  *     直接将元素的zoom设置为1即可
    38                  * 
    39                  */
    40                 
    41                 /*
    42                  * zoom表示放大的意思,后边跟着一个数值,写几就将元素放大几倍
    43                  * zoom:1表示不放大元素,但是通过该样式可以开启hasLayout
    44                  * zoom这个样式,只在IE中支持,其他浏览器都不支持
    45                  */
    46                 zoom:1;
    47                 overflow: hidden;
    48                 
    49             }
    50             
    51             .box2{
    52                  100px;
    53                 height: 100px;
    54                 background-color: blue;
    55                 float: left;
    56                 
    57             }
    58             
    59             .box3{
    60                  height: 100px;
    61                  background-color: yellow;
    62             }
    63             
    64         </style>
    65     </head>
    66     <body>
    67         
    68         <div class="box1">
    69             <div class="box2"></div>
    70         </div>
    71         
    72         <div class="box3"></div>
    73         
    74     </body>
    75 </html>

    第二种方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style type="text/css">
     8             .box1{
     9                 border: 1px solid red;
    10             }
    11             
    12             .box2{
    13                  100px;
    14                 height: 100px;
    15                 background-color: blue;
    16                 
    17                 float: left;
    18             }
    19             
    20             /*
    21              * 解决高度塌陷方案二:
    22              *     可以直接在高度塌陷的父元素的最后,添加一个空白的div,
    23              *     由于这个div并没有浮动,所以他是可以撑开父元素的高度的,
    24              *     然后在对其进行清除浮动,这样可以通过这个空白的div来撑开父元素的高度,
    25              *     基本没有副作用
    26              * 
    27              * 使用这种方式虽然可以解决问题,但是会在页面中添加多余的结构。
    28              */
    29             .clear{
    30                 clear: both;
    31             }
    32             
    33         </style>
    34     </head>
    35     <body>
    36         <div class="box1">
    37             <div class="box2"></div>
    38             <div class="clear"></div>
    39         </div>
    40     </body>
    41 </html>

    第三种方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <style type="text/css">
     7             .box1{
     8                 border: 1px solid red;
     9             }
    10             
    11             .box2{
    12                  100px;
    13                 height: 100px;
    14                 background-color: blue;
    15                 float: left;
    16             }
    17             
    18             /*通过after伪类,选中box1的后边*/
    19             /*
    20              * 可以通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动,
    21              *     这样做和添加一个div的原理一样,可以达到一个相同的效果,
    22              *     而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用
    23              */
    24             .clearfix:after{
    25                 /*添加一个内容*/
    26                 content: "";
    27                 /*转换为一个块元素*/
    28                 display: block;
    29                 /*清除两侧的浮动*/
    30                 clear: both;
    31             }
    32             
    33             /*
    34              * 在IE6中不支持after伪类,
    35              *     所以在IE6中还需要使用hasLayout来处理
    36              */
    37             .clearfix{
    38                 zoom:1;
    39             }
    40         </style>
    41     </head>
    42     <body>
    43         <div class="box1">
    44             <div class="box2"></div>
    45         </div>
    46     </body>
    47 </html>
  • 相关阅读:
    Android Studio 开发
    Jsp编写的页面如何适应手机浏览器页面
    电影
    Oracle 拆分列为多行 Splitting string into multiple rows in Oracle
    sql server 2008 自动备份
    WINGIDE 激活失败
    python安装 错误 “User installations are disabled via policy on the machine”
    ble编程-外设发送数据到中心
    iOS开发-NSString去掉所有换行及空格
    ios9 字符串与UTF-8 互相转换
  • 原文地址:https://www.cnblogs.com/xiluhua/p/14318430.html
Copyright © 2020-2023  润新知