CSS Flexbox:一个全解读

阅读时长 5 分钟读完

Flexbox 是 CSS 的布局模块,可以帮助我们更加方便地实现各种复杂的布局需求,尤其是在响应式布局中更加方便。在本文中,我们将深入探讨 Flexbox 在前端开发中的使用。

理解 Flexbox 概念

Flexbox 是 Flexible Box Layout 的简称,即弹性盒子布局。它是一种新型的布局模式,可以使我们更加方便地实现响应式布局、自适应布局、垂直居中、等分布局等各种复杂的布局需求,比如以下的需求:

这个简单的代码可以让一个容器居中对齐其内部的子元素,不论是在水平方向还是垂直方向上。以上就是 Flexbox 的优越性所在。

Flexbox 属性详解

display

Flexbox 布局是建立在一个容器之上的,所以我们必须先定义一个容器。容器的定义方式是通过设置其 display 属性来实现的:

以上代码就将一个 container 元素变成了一个 Flexbox 容器。

flex-direction

在 Flexbox 中,这个属性是用来定义主轴方向的。主轴是指 Flexbox 中的一条轴线,其方向沿着排列方向方向而定。默认的主轴方向是从左到右。通过设置 flex-direction 属性,我们可以改变主轴的方向,取值包括 rowrow-reversecolumncolumn-reverse 四种。

以上代码将容器的主轴方向更改为从右到左。

justify-content

这个属性是用来定义 Flexbox 容器内部的子元素在布局中的排列方式。它可以让子元素在水平方向上排列,取值有 flex-startflex-endcenterspace-betweenspace-around

以上代码将容器内部的子元素居中排列。

align-items

这个属性是用来定义 Flexbox 容器内部的子元素在垂直方向上的对齐方式,取值包括 flex-startflex-endcenterstretchbaseline

以上代码将容器内部的子元素在垂直方向上居中对齐。

flex-grow

这个属性是用来定义子元素在容器中的占比。取值为一个数值,代表占比的权重,数值越大,占比越大。如果有多个元素,且它们的 flex-grow 属性值不同,那么总占比就将按照 flex-grow 的值分配。

以上代码中的元素将平分容器的剩余空间。

flex-shrink

这个属性与 flex-grow 属性类似,用于定义子元素的收缩能力。如果容器过小,子元素本身的大小将受到压缩。默认情况下,flex-shrink 的值为 1,即所有子元素都可以被等比例地压缩。如果容器没有溢出,则 flex-shrink 不起作用。

以上代码中的元素将不会被压缩。

flex-basis

这个属性是用来设置子元素的初始大小的,往往与 widthheight 属性一并使用。如果同时设置了 flex-basiswidthheight 属性,那么 widthheight 属性将会被覆盖,以 flex-basis 的值为准。

以上代码将子元素的初始大小设置为 100 像素。

flex

这个属性是用来同时设置 flex-growflex-shrinkflex-basis 的简写属性。

以上代码的效果与 flex-grow: 1; flex-shrink: 0; flex-basis: 100px; 是一样的。

align-self

这个属性是用来覆盖 align-items 的属性值的。如果覆盖了一个 align-items 的属性值,那么这个子元素将只在有此属性值的容器中居中,其他兄弟元素将不受影响。

以上代码将子元素居中。

注意事项

  • Flexbox 在 IE11 及以下版本中不支持。
  • CSS Grid Layout 也是一种新型的布局方式,它与 Flexbox 搭配使用可以实现更加灵活的布局方案。

结语

Flexbox 可以帮助我们更加方便地实现各种复杂的布局需求,代码量也变得更加简洁。这个新型的布局方案还有很多其他的属性和用法,有需要的读者可以深入学习。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d7c664a941bf7134decf35

纠错
反馈

纠错反馈