CSS - Flex 之最直观的方式学习 Flexbox 属性(一)

简介: CSS - Flex 之最直观的方式学习 Flexbox 属性(一)

弹性盒模型(Flexbox Layout)是CSS3新增的一种布局模式。它可以很方便地用来改善动态或未知大小的子元素在父元素中的对齐,方向和顺序等等。flex容器的主要特性是它可以调整子元素的宽度或高度去填充可用的空白区,以最优的方式达到兼容不同屏幕大小。

很多设计师和开发人员发现flexbox布局很容易使用,因为元素的定位非常简单,只需要写很少的代码,就能达到预期效果。Flexbox布局算法不同于那些基于垂直或水平的块或内联布局。Flexbox布局应该用在小项目中的组件。

这篇文章主要集中在说明flex属性如何影响布局,而不是这些属性如何工作。

可能你会觉得flex很多属性很难记住,或是看了很多文字说明但是不知道具体效果如何,那么这篇文章就非常适合你了。

让我们开始吧!



BASICS

在我们开始之前先来定下规则,我们把父容器称为flex container,它的直接子元素称为flex items

上面的盒子中,你可以看到用来描述flex container 和 它的子元素的属性与术语。如果你需要查看更多,点击这里

flexbox从2009年的初稿走到现在,经历了时间的洗练和各种语法的变更。所以为了避免冲突,这篇文章我们只使用最新并且有效的版本。如果你需要兼容旧浏览器,你可以看看这篇文章(英文)。

最新的flexbox兼容以下浏览器:

  • Chrome 29+
  • Firefox 28+
  • Internet Explorer 11+
  • Opera 17+
  • Safari 6.1+ (prefixed with -webkit-)
  • Android 4.4+
  • iOS 7.1+ (prefixed with -webkit-)

如果你需要查看更多浏览器兼容性,你可以看这里

 

USAGE

使用flexbox布局,你需要在父元素上设置display属性

.flex-container {
  display: -webkit-flex; /* Safari */
  display: flex;
}


或者你可以把它当行内元素使用

.flex-container {
  display: -webkit-inline-flex; /* Safari */
  display: inline-flex;
}


注意:你给父容器设置了这个属性后,它的子元素都会自动变成flex items

有很多种给flexbox属性分组的方式,到目前为止,我认为最简单,并且最容易理解的方式是按照flex containerflex items分成两组。下面,我们来解释各个元素是如何影响布局效果的。

 

Flexbox Container 属性

flex-direction

这个属性指定了flex itemsflex container中是如何布局的。通过设置flex container的主轴的方向,它们会按照两个方向布局,水平的行或者垂直的列。

例子:

.flex-container {
  -webkit-flex-direction: row; /* Safari */
  flex-direction:         row;
}


设置为行,那么在ltr上下文环境下,所有flex items会按照从左到右的顺序排成一行。


image.png


.flex-container {
  -webkit-flex-direction: row-reverse; /* Safari */
  flex-direction:         row-reverse;
}


使用row-reverse属性,那么在ltr上下文环境下,子元素则会按照从右到左的顺序排成一行。


image.png

.flex-container {
  -webkit-flex-direction: column; /* Safari */
  flex-direction:         column;
}


使用column属性,flex items会按照从上到下的方式排列。


image.png

.flex-container {
  -webkit-flex-direction: column-reverse; /* Safari */
  flex-direction:         column-reverse;
}


使用column-reverse,则会放过来。


image.png


默认值:row

注:row和row-reverse的排列方式取决于书写模式,所以如果是在rtl上下文环境下,它们都会反转。

 

flex-wrap

默认的flexbox概念是把所有子元素都放在一行里面,你可以通过flex-wrap属性来控制flex container是否将子元素分多行处理,以及新增行的方向。

例子:

.flex-container {
  -webkit-flex-wrap: nowrap; /* Safari */
  flex-wrap:         nowrap;
}

Flex items会被置在一行里面,并且默认它们会被压缩来适应容器的宽度。


image.png

.flex-container {
  -webkit-flex-wrap: wrap; /* Safari */
  flex-wrap:         wrap;
}



rap, Flex items会被按照从上到下从左到右的顺序分配到多行。


image.png

.flex-container {
  -webkit-flex-wrap: wrap-reverse; /* Safari */
  flex-wrap:         wrap-reverse;
}
目录
相关文章
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
29天前
|
前端开发
CSS 浮动属性讲解和使用
本文介绍了CSS中的浮动(float)属性,包括其基本功能、属性选项及其在网页布局中的应用。浮动使元素脱离文档流,向左或右排列,周围元素随之调整。文章还详细讲解了清除浮动的方法,如使用clear属性、设置父元素高度、利用overflow属性、伪元素等,以解决因浮动导致的布局问题。最后,强调了浮动在创建复杂布局时的作用,并预告后续内容。
35 2
|
29天前
|
前端开发
CSS transition过渡属性详解
本文介绍了CSS中`transition`属性的作用、用法及实例。`transition`用于在元素属性变化时添加平滑过渡动画,通过设置`transition-property`、`transition-duration`、`transition-timing-function`和`transition-delay`等属性值,可以精细控制过渡效果。文末提供了HTML示例代码,展示了如何使用`transition`实现鼠标悬停时背景颜色的平滑变化。
42 1
|
1月前
|
开发者 UED 容器
鸿蒙next版开发:ArkTS组件通用属性(Flex布局)
在HarmonyOS next中,ArkTS的Flex布局是一种强大且灵活的布局方式,支持水平或垂直方向排列元素,并能动态调整大小和位置以适应不同屏幕。主要属性包括justifyContent、alignItems、direction和wrap,适用于导航栏、侧边栏和表单等多种场景。示例代码展示了如何使用这些属性创建美观的布局。
77 10
|
1月前
|
Web App开发 前端开发 iOS开发
css所有缩写属性,CSS属性简写整理
css所有缩写属性,CSS属性简写整理
33 1
|
1月前
|
前端开发
css简写属性
css简写属性
32 0
|
2月前
|
前端开发 开发者 容器
CSS3:flex&box-sizing
本文介绍了CSS中的Flex布局及其相关属性,如`flex-direction`、`flex-wrap`、`justify-content`等,并通过代码示例展示了如何使用这些属性来控制容器内的项目排列方式。同时,还讲解了`align-items`属性用于定义子元素在交叉轴上的对齐方式,以及`box-sizing`属性的不同取值对元素尺寸计算的影响。
|
2月前
|
前端开发 JavaScript
如何在CSS中添加自定义属性
如何在CSS中添加自定义属性
20 0
CSS3 flex的使用方法
display:flex; align-items://水平对齐方式 justify-content://垂直对齐方式 flex://盒子所占大小(如果你盒子里面只有两个div,那么你设置其中之一个flex,那么另外一个会自动填充)
622 0