CSS布局技巧 | 青训营

112 阅读5分钟

本文介绍了CSS的浮动、定位、弹性盒子布局的定义、应用场景和实操实践。

浮动布局

CSS 浮动布局是一种经典的网页布局技术,用于实现多列布局和元素的浮动效果。通过设置元素的 float 属性为 leftright,可以将元素浮动到父容器的左侧或右侧,并使其他内容环绕它。

以下是使用浮动布局的基本步骤:

  1. 将要浮动的元素设置 float: left; 或 float: right;。这会使元素从正常的文档流中脱离出来,并浮动在父容器的左侧或右侧。
  2. 在其他元素上应用 clear: both;,以清除浮动对后续内容的影响。clear: both; 可以防止后续内容与浮动元素发生重叠。
  3. 为了确保父容器能够正确地包裹浮动元素,请在父容器上使用 overflow: hidden; 或其他 clearfix 技巧(如伪元素 ::after 清除浮动)。
.container {
  overflow: hidden;
}

.column {
  float: left;
  width: 50%;
  box-sizing: border-box;
  padding: 10px;
}
<div class="container">
  <div class="column">
    <!-- 左侧列内容 -->
  </div>
  <div class="column">
    <!-- 右侧列内容 -->
  </div>
</div>

在上述示例中,container 是包裹两列的父容器,column 类是每一列的样式类。通过将两列元素设置为 float: left;width: 50%;,它们会并排浮动显示。

定位布局

CSS 定位布局是一种通过设置元素的定位属性来控制元素在页面中的位置的布局技术。它使用的主要定位属性有 positiontopbottomleftright

以下是 CSS 定位布局常用的定位属性和实践:

  1. position 属性:用于指定元素的定位方式。常见的取值包括:

    • static(默认):元素按照正常的文档流布局,不进行特殊定位。
    • relative:相对于元素在正常文档流中的位置进行定位,使用 topbottomleft 和 right 属性进行微调。
    • absolute:相对于最近的已定位祖先元素(非 static 定位)进行定位,或者相对于整个页面进行定位。使用 topbottomleft 和 right 属性进行具体定位。
    • fixed:相对于浏览器窗口进行定位,元素将固定在视口的特定位置,不随页面滚动而移动。同样使用 topbottomleft 和 right 属性指定位置。
  2. topbottomleftright 属性:用于指定元素的上、下、左、右偏移量,以确定元素的具体位置。这些属性通常与 position 属性一起使用。

.container {
  position: relative;
}

.box {
  position: absolute;
  top: 50px;
  left: 20px;
}
<div class="container">
  <div class="box">
    <!-- 定位的元素内容 -->
  </div>
</div>

在上述示例中,.container 元素被设置为 position: relative;,以充当 .box 元素的定位参考点。.box 元素被设置为 position: absolute;,并使用 topleft 属性来指定相对于 .container 元素的具体位置。

CSS 定位布局非常灵活,可以用于创建各种复杂的布局效果。然而,要注意合理使用定位布局,避免过度依赖定位和出现布局问题。同时,也要注意不同定位属性对文档流和其他元素的影响。

弹性盒子布局

CSS 弹性盒子布局(Flexbox)是一种灵活的布局模型,用于在容器内创建自适应和响应式的布局。它通过使用容器和子元素上的属性来实现弹性盒子的排列方式、对齐方式和尺寸分配。

以下是 CSS 弹性盒子布局的常用属性和实践:

  1. display: flex;:将容器设置为弹性容器,使其成为一个弹性盒子。这样,子元素就可以按照弹性盒子的规则进行布局。

  2. flex-direction:指定弹性盒子的主轴方向。常见的取值有:

    • row(默认):主轴为水平方向,从左到右排列。
    • column:主轴为垂直方向,从上到下排列。
    • row-reverse:主轴为水平方向,从右到左排列。
    • column-reverse:主轴为垂直方向,从下到上排列。
  3. justify-content:控制子元素在主轴上的对齐方式。常见的取值有:

    • flex-start(默认):靠近主轴起始端对齐。
    • flex-end:靠近主轴末端对齐。
    • center:居中对齐。
    • space-between:平均分布在主轴上,首尾元素靠近容器边缘。
    • space-around:平均分布在主轴上,子元素之间和首尾元素与容器边缘的间距相等。
  4. align-items:控制子元素在交叉轴上的对齐方式。常见的取值有:

    • stretch(默认):拉伸子元素以填满交叉轴。
    • flex-start:靠近交叉轴起始端对齐。
    • flex-end:靠近交叉轴末端对齐。
    • center:居中对齐。
    • baseline:以基线对齐。
  5. flex-growflex-shrinkflex-basis:这些属性控制弹性盒子子元素在主轴上的分配和调整。它们一起组成了 flex 缩写属性。

  6. align-self:控制单个子元素在交叉轴上的对齐方式,覆盖了 align-items 属性。可以为每个子元素单独设置此属性。

.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

.box {
  flex-grow: 1;
  flex-basis: 0;
}
<div class="container">
  <div class="box">
    <!-- 弹性盒子内容 -->
  </div>
  <div class="box">
    <!-- 弹性盒子内容 -->
  </div>
</div>

在上述示例中,.container 元素被设置为 display: flex;,成为一个弹性容器。通过设置 justify-content: center;align-items: center;,子元素会居中对齐。

CSS 弹性盒子布局提供了一种简单而强大的方式来创建灵活的布局。它适用于各种情况,如导航栏、网格布局、居中对齐等。使用弹性盒子布局可以更方便地实现响应式和自适应的页面布局。