CSS之 float 属性

本文深入探讨了CSS中float属性的特性和其带来的布局问题,包括父容器高度塌陷及解决策略,如clearfix方法在不同浏览器版本中的实现技巧,以及在实际应用中需要注意的兼容性和容错性问题。

特性:

  float的设计初衷仅仅是文字环绕效果
  浮动具有破坏性,会使父容器高度塌陷
  清除浮动方法: 1.脚底插入cleart:both 2.父元素BFC(IE8 )/haslayout(IE6/7)
  两者差异: 1.与外部链接,会发生margin重叠 2.封闭式,不会外部发生冲突
  两者不足: 1.多余空标签 2.兼容性无法一方通行
  权衡后的策略: .clearfix需作用在父元素上

1 IE8 : clearfix::after{ conter:''; display: block; clear: both; height: 0; overflow: hidden;}
2 IE6/7: celarfix { *zoom:1; };
3 优化: .clearfix::after{ content: ''; display: table; clear: both;}

注意项

  容错性糟糕,容易出问题
  需要元素固定尺寸,无重用性
  在IE低版本下,会引发很多问题

兼容性问题

  IE6: 浮动有双倍边距,跟随浮动元素3px,后面文字会下沉
  IE7: 浮动元素与文本不在同一行,最后一个字符重叠....

### CSS float属性介绍 CSS的`float`属性用于指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该属性使元素脱离正常的文档流,向左或向右浮动,直到它碰到包含框的边缘或者另一个浮动元素。 ### 取值说明 - `left`:元素向左浮动。 - `right`:元素向右浮动。 - `none`:元素不浮动,遵循正常的文档流布局,这是默认值。 - `inherit`:元素继承其父元素的`float`属性值。 ### 使用示例 #### 向左浮动 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .float-left { float: left; width: 100px; height: 100px; background-color: lightblue; margin-right: 10px; } </style> </head> <body> <div class="float-left">向左浮动</div> <p>这是一段文本,会环绕在浮动元素的周围。这是一段文本,会环绕在浮动元素的周围。</p> </body> </html> ``` #### 向右浮动 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .float-right { float: right; width: 100px; height: 100px; background-color: lightgreen; margin-left: 10px; } </style> </head> <body> <div class="float-right">向右浮动</div> <p>这是一段文本,会环绕在浮动元素的周围。这是一段文本,会环绕在浮动元素的周围。</p> </body> </html> ``` ### 清除浮动 当使用`float`属性时,可能会导致父元素高度塌陷的问题。为了解决这个问题,可以使用`clear`属性来清除浮动。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .parent { border: 1px solid black; } .float-child { float: left; width: 100px; height: 100px; background-color: lightcoral; } .clearfix::after { content: ""; display: table; clear: both; } </style> </head> <body> <div class="parent clearfix"> <div class="float-child">浮动元素</div> </div> </body> </html> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值