欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
盒子的高度问题
 
1.标准流中盒子的高度可以被内容高度撑起来;
 
2.浮动流中浮动的内容不能撑起盒子的高度;
 
为什么要清楚浮动?
 
相邻的盒子之间,如果前面的盒子没有高度,那么后面盒子中的浮动元素就会去找前面盒子中的浮动元素,这样会导致界面混乱,所以需要清除浮动;
 
清除浮动方式一:
 
解决方案:
 
给前面一个父元素设置高度
 
注意点:
 
在企业开发中, 我们能不写高度就不写高度, 所以这种方式用得很少;
 
CSS:
 
 
 
<style>
 
     *{
 
         margin: 0;
 
         padding: 0;
 
     }
 
     .box1{
 
         height: 20px;  //给前面盒子设置高度
 
         background-color: red;
 
     }
 
     .box2{
 
         background-color: green;
 
     }
 
     .box1 p{
 
         width: 100px;
 
         background-color: blue;
 
     }
 
     .box2 p{
 
         width: 100px;
 
         background-color: yellow;
 
     }
 
     p{
 
         float: left;
 
     }    </style>
 
body:
 
<div class="box1">
 
    <p>我是文字1</p>
 
    <p>我是文字1</p>
 
    <p>我是文字1</p></div><div class="box2">
 
    <p>我是文字2</p>
 
    <p>我是文字2</p>
 
    <p>我是文字2</p>
 
</div>
 
清除浮动方式二:
 
解决方案:
 
给后面的盒子添加clear:both;属性
 
clear属性取值:
 
none: 默认取值, 按照浮动元素的排序规则来排序(左浮动找左浮动, 右浮动找右浮动)
 
left: 不要找前面的左浮动元素(也就是:不要和前面的左浮动元素显示在一行)
 
right: 不要找前面的右浮动元素
 
both: 不要找前面的左浮动元素和右浮动元素
 
注意点:
 
当我们给某个元素添加clear属性之后, 那么这个属性的margin属性就会失效;所以不推荐使用
 
CSS:
 
 
 
<style>
 
        *{
 
            margin: 0;
 
            padding: 0;
 
        }
 
        body{
 
            border: 1px solid #000;
 
        }
 
        .box1{
 
            background-color: red;
 
        }
 
        .box2{
 
            background-color: green;
 
            clear: both; //给后面的盒子添加clear:both;属性
 
            margin-top: 28px;
 
        }
 
        .box1 p{
 
            width: 100px;
 
            background-color: blue;
 
        }
 
        .box2 p{
 
            width: 100px;
 
            background-color: yellow;
 
        }
 
        p{
 
            float: left;
 
        }    </style>
 
清除浮动方式三:
 
解决方案:
 
外墙法:在两个有浮动子元素的盒子之间添加一个额外的块级元素;并且设置clear: both;属性;
 
注意点:
 
外墙法它可以让第二个盒子使用margin-top属性,
 
外墙法不可以让第一个盒子使用margin-bottom属性,
 
不过可以通过设置额外标签的高度来实现margin效果;
 
搜狐中大量使用了这个技术,但是由于需要添加大量无意义的标签,所以不推荐使用;
 
CSS:
 
 
 
 
 
<style>
 
        *{
 
            margin: 0;
 
            padding: 0;
 
        }
 
        .box1{
 
            background-color: red;            /*margin-bottom: 10px;*/ //外墙法不可以让第一个盒子使用margin-bottom属性,
 
        }
 
        .box2{
 
            background-color: green;            /*margin-top: 10px;*/  //外墙法它可以让第二个盒子使用margin-top属性,
 
        }
 
        .box1 p{
 
            width: 100px;
 
            background-color: blue;
 
        }
 
        .box2 p{
 
            width: 100px;
 
            background-color: yellow;
 
        }
 
        p{
 
            float: left;
 
        }
 
        .wall{
 
            clear: both; //设置clear: both;属性;
 
        }
 
        .h20{
 
            height: 20px; //设置额外标签的高度来实现margin效果;
 
            background-color: skyblue;
 
        }
 
    </style>
 
<div class="box1">
 
    <p>我是文字1</p>
 
    <p>我是文字1</p>
 
    <p>我是文字1</p></div><div class="wall h20"></div> //外墙法:在两个有浮动子元素的盒子之间添加一个额外的块级元素;<div class="box2">
 
    <p>我是文字2</p>
 
    <p>我是文字2</p>
 
    <p>我是文字2</p></div>
 
清除浮动方式四:
 
解决方案:
 
内墙法:
 
1在第一个盒子中所有子元素最后添加一个额外的块级元素,
 
2给这个额外添加的块级元素设置clear: both;属性
 
注意点:
 
内墙法它可以让第二个盒子使用margin-top属性
 
内墙法它可以让第一个盒子使用margin-bottom属性
 
<a>内墙法会自动撑起盒子的高度,所以可以直接设置margin属性</a>
 
外墙法和内墙法区别?
 
外墙法不能撑起第一个盒子的高度, 而内墙法可以撑起第一个盒子的高度
 
在企业开发中<a>不常用隔墙法</a>来清除浮动 (隔墙法:外墙法和内墙法)
 
CSS:
 
 
 
   <style>
 
        *{            margin: 0;            padding: 0;
 
        }        .box1{            background-color: red;            /*margin-bottom: 10px;*/
 
        }        .box2{            background-color: green;            /*margin-top: 10px;*/
 
        }        .box1 p{            width: 100px;            background-color: blue;
 
        }        .box2 p{            width: 100px;            background-color: yellow;
 
        }        p{            float: left;
 
        }        .wall{            clear: both;
 
        }        .h20{            height: 20px;            background-color: skyblue;
 
        }    </style></head>
 
<div class="box1">
 
    <p>我是文字1</p>
 
    <p>我是文字1</p>
 
    <p>我是文字1</p>
 
    <div class="wall h20"></div> //设置内墙</div><div class="box2">
 
    <p>我是文字2</p>
 
    <p>我是文字2</p>
 
    <p>我是文字2</p></div>









本文转载自中文网


 

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h58029.shtml