Published 2022-05-08

css - flexbox

Flexbox 是一种 CSS 布局模式,用于在容器中快速、灵活地排列和对齐子元素,可以有效地实现自适应布局和响应式设计。Flexbox 的全称是 Flexible Box Layout,即“弹性盒子布局”。

Flexbox 的核心是容器和子元素之间的关系,容器称为 flex container(弹性容器),子元素称为 flex item(弹性子元素)。通过在容器上设置 display: flex 或 display: inline-flex 属性,可以将容器变为一个 flexbox,然后可以使用一系列的 CSS 属性来控制子元素的排列和对齐方式。

以下是 Flexbox 常用的属性和其作用:

Flexbox 的优点是可以简化布局代码,减少使用 float 和 position 的情况,同时可以实现自适应和响应式设计,提高页面的可维护性和可扩展性。但是需要注意的是,Flexbox 不适用于所有场景,例如多行文本的垂直居中需要结合其他技术实现。

以下是一个使用 Flexbox 实现的简单的响应式布局案例,包含一个 header、一个 sidebar 和一个 content 区域,可以根据屏幕尺寸自适应布局:

HTML 代码:

<div class="container">
  <header>Header</header>
  <div class="content">
    <div class="sidebar">Sidebar</div>
    <div class="main">Main content</div>
  </div>
</div>

CSS 代码:

.container {
  display: flex;
  flex-wrap: wrap;
}

header {
  width: 100%;
  background-color: #333;
  color: #fff;
  padding: 20px;
  text-align: center;
}

.content {
  display: flex;
  flex-wrap: wrap;
  flex-grow: 1;
  justify-content: flex-start;
  align-items: stretch;
}

.sidebar {
  flex-basis: 200px;
  background-color: #eee;
  padding: 20px;
}

.main {
  flex-grow: 1;
  padding: 20px;
}

@media screen and (max-width: 768px) {
  .sidebar {
    flex-basis: 100%;
  }
}

解释:

首先将容器设置为 flex 布局,使用 flex-wrap 属性允许子元素在需要时换行。

这个案例展示了 Flexbox 的基本用法,通过简单的 CSS 属性设置,可以实现自适应和响应式布局。

更多请参考:Flexbox 指南