在技术文档中对于clear的值是这样解释的:
值 | 描述 |
left | 在左侧不允许浮动元素 |
right | 在右侧不允许浮动元素 |
both | 在左右两侧均不允许浮动元素 |
none | 默认值。允许浮动元素出现在两侧。 |
inherit | 规定应该从父元素集成clear属性的值。 |
我们在实例中看一下:
首先:在一个大盒子里放4个p标签,让p标签全部左浮动,此时会产生高度塌陷问题
HTML代码如下:
<body> <div class="box"> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </div> </body>
css代码如下:
<style> *{ margin:0; padding:0; } .box{ border:3px solid #f00; } .box p{ width:100px; background-color:pink; border:3px solid #333; float:left; } p:nth-of-type(1)} height:60px; background-color:yellow; } p:nth-of-type(2)} height:100px; background-color:orange; } p:nth-of-type(3)} height:140px; background-color:green; } p:nth-of-type(4)} height:180px; background-color:blue; } </style>
在前两个p标签之后添加一个空的块元素div,给这个块元素clear:left属性
HTML代码如下:
<body> <div class="box"> <p>1</p> <p>2</p> <div class="clear"></div> <p>3</p> <p>4</p> </div> </body>
css代码如下:
.clear{ clear: left; }
看起来是实现了元素左侧不允许有浮动,但如果给第2个p标签一个右浮动
css代码如下:
p:nth-of-type(2){ float: right; height: 100px; background-color: orange; }
会发现父元素只撑开了第一个左浮动的p标签的宽度。