css float 布局

最近写前端页面时,需要将两个 div 并排起来,最简单的方法是通过 float 属性将元素浮动。下面详细介绍

元素浮动

当构建一个页面的排版时,使用元素浮动是一种直观的方法去控制元素的位置。元素浮动可以让一个元素靠近或者远离另一个元素。它根据一个元素的大小和其父节点容器的大小来构造这个元素在排版中与其他元素之间的关系。

当一个元素被浮动时,这个元素是挨着前一个元素,还是出现在新的一行?这取决于它相邻元素的位置。

当然,元素浮动在提供强大威力的同时,也带来了很多问题。一个著名的问题就是,当一个父节点包括了若干浮动的子元素时,父节点的排版会考虑到浮动子元素的大小和位置,但是子元素并不会影响父节点的大小。在这种情况下,父节点的height变成了0,并且忽略其他属性。 很多时候,这个问题没有被注意到,特别是当父节点没有附合任何的CSS样式,而且嵌套的元素也看上去被正确地排列了。

如果没有正确地排列嵌套元素,那么可能引发排版上的错误。请参阅下面的这个例子, 类名为.box-set的DIV容器应该有浅灰色的背景,但是因为其嵌套元素都是浮动元素,所以原本期望的背景色没有出现。如果你查看.box-set的盒模型,你会发现它的height值为0。

<div class="box-set">
  <div class="box">Box 1</div>
  <div class="box">Box 2</div>
  <div class="box">Box 3</div>
</div>
.box-set {
  background: #e8eae9;
}
.box {
  background: #8ec63f;
  height: 100px;
  float: left;
  margin: 10px;
  width: 200px;
}

使用overflow

在父容器上设置 overflow:auto 可以让它自动包含子元素,从而具有了实际的height值,这样上例中的灰色背景将得到显示。

在IE6中使用这一招时需要给父节点容器设置height或者width属性。因为实际情况中height常常是可变的,所以是设置width的值。对于苹果平台上的IE,设置overflow:auto将会给容器增加滚动条,所以最好是设置 overflow : hidden 。

参考

http://www.cnblogs.com/newyorker/archive/2013/02/01/2886282.html

### CSS Float 属性的用法及布局技巧 #### 什么是Float属性? `float` 是一种CSS属性,它允许元素向左或右移动,直到它的外边缘碰到包含框或者另一个浮动元素的边框为止。这种行为通常被用来创建多列布局以及实现文字环绕图片的效果[^1]。 #### `float` 的基本语法 以下是 `float` 属性的基本语法: ```css selector { float: none | left | right; } ``` - **none**: 默认值,表示不应用任何浮动。 - **left**: 将元素尽可能靠左放置。 - **right**: 将元素尽可能靠右放置[^2]。 #### 如何清除浮动? 当使用 `float` 创建布局时,可能会遇到父容器高度塌陷的问题。解决这一问题的方法之一是使用 `clear` 属性来清除浮动的影响。可以通过以下方式实现: ```css .clearfix::after { content: ""; display: table; clear: both; } ``` 上述代码片段利用伪类 `::after` 和 `content` 属性,在父级元素内部生成一个额外的内容区域并将其作为清理器,从而有效防止因子元素浮动而导致的高度塌陷现象[^3]。 #### 实现多列布局的例子 下面展示了一个简单的两栏布局案例: ```html <div class="container"> <div class="column-left">左侧内容</div> <div class="column-right">右侧内容</div> </div> <style> .container { overflow: hidden; /* 或者使用clearfix方法 */ } .column-left { float: left; width: 50%; box-sizing: border-box; padding: 10px; } .column-right { float: right; width: 50%; box-sizing: border-box; padding: 10px; } </style> ``` 在这个例子中,`.column-left` 被设置为向左浮动而 `.column-right` 向右浮动,这样就形成了两个相邻排列的区块[^4]。 #### 响应式布局中的最佳实践 尽管现代开发更倾向于采用 Flexbox 或 Grid Layout 来构建复杂页面结构,但在某些场景下仍然会运用到传统的 `float` 技术。为了使基于 `float` 构建的设计能够适应不同屏幕尺寸的变化,建议结合媒体查询调整各部分宽度比例及相关样式参数。 例如: ```css @media (max-width: 768px) { .column-left, .column-right { float: none; width: auto; } } ``` 以上代码会在视窗小于等于768像素宽的时候取消浮动静态,并让每一块占据整个行的空间,以此达到更好的移动端显示效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值