图文并茂!8 张 Gif 图学会 Flexbox

8 张 Gif 图学会 Flexbox

Flexbox 实现了帮助我们脱离 CSS 苦海(例如垂直居中)的目标,但想精通它却需要你应对一些挑战。所以,我们将通过一些动画让你直观地了解 Flexbox 的工作原理,并使用它来构建灵活的布局。

Flexbox 的基本原则是提供一种构建灵活、直观的布局方式。

为了达成这一目标,它让容器决定如何分配容器成员的大小以及空间。这听起来相当不错,那么,让我们来看看实践中它是如何工作的。

在本文中,我们将深入的探讨 Flexbox 中 5 个常见的属性。看看它们能做什么,如何使用它们,以及使用它们构建的布局是什么样的。


属性 #1: Display: Flex

以下是示例页面:

我们可以看到,在灰色的容器中,包含了 4 种不同颜色与大小的 div 元素。每个 div 元素都默认display: block,因此,每个四方体都占据了一行的整个宽度。

为了开始使用 Flexbox 布局,你需要将你的容器变为 Flex 容器。这很容易实现:

#container {
  display: flex;
}

你会发现,你的 div 元素已经内行显示了。虽然,看似你只是稍微做了些改变,但是你已经为四方体添加了名为 flex context 的环境。于是,你就可以利用它来定位元素了,这比传统的 CSS 写法要简单了很多。

属性 #2: Flex Direction

Flexbox 容器有两根轴:主轴和垂直的交叉轴,默认情况如下:

项目默认是由主轴(从左到右)排列的,这就是你使用display: flex后,四方体以水平线排列的原因。

Flex-direction决定了主轴的方向。

#container {
  display: flex;
  flex-direction: column;
}

这里有一个重要的区别:flex-direction: column所指的是四方体将沿主轴的垂直方向对齐。它使主轴自身从水平到垂直。

flex-direction还有一些其他的值供你设置,例如:row-reversecolumn-reverse.

属性 #3: Justify Content

justify-content属性定义了项目在主轴上的对齐方式。

在这里,你将更多的了解主轴与交叉轴的区别。首先,让我们回到flex-direction: row值上。

#container {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
}

justify-content属性包含了 5 个值供你使用:

  1. Flex-start
  1. Flex-end
  2. Center
  3. Space-between
  4. Space-around

Space-aroundSpace-between是两个不容易直观理解的值。Space-between实现了两端对齐,而四方体之间的间隔都是相等的

Space-around使四方体两侧的间隔相等,这意味着四方体之间的间隔比最外边四方体与边框的间隔要大一倍。(每个四方体贡献了不重叠的等量余量,从而使空间翻倍)

最后一点:请记住** justify-content沿主轴对齐,而flex-direction决定了主轴的方向。**它将决定你移动的方向。

属性 #4: Align Items

当你理解了justify-content属性,理解Align Items属性就变得轻而易举了。

justify-content定义了项目在主轴的对齐方式,而align-items属性则定义了项目在交叉轴上是如何对齐的。

当我们将flex-direction属性值重置为row后,我们的轴看上去就与上图一致。

那么,让我们深入的了解下Align Items属性有哪些值:

  1. flex-start
  1. flex-end
  2. center
  3. stretch
  4. baseline

前三个值与justify-content属性中的值完全一致,没有太多需要解释的地方。

但是,接下来两个值却有些不同。

Stretch指的是如果项目未设置高度或设为auto,项目将占满整个容器。而baseline是指项目将与段落标签的底部对齐。

(请注意,对于align-items:stretch,我不得不将四方体的高度设置为auto,否则height属性将覆盖该stretch

对于baseline,如果你去掉段落标签,它则会对齐四方形的底部,如下图所示:

为了更好地演示主轴和交叉轴的表现,在基于justify-content属性和align-items属性的值为center的情况下,让我们看看赋予flex-direction属性两个不同值后,它的表现如何:

我们可以看到,对于row值,四方体沿着与主轴水平方向排列,而对于column值,它们则沿着与主轴垂直的方向排列。

即使出现了同时保持水平与垂直居中的情况,两者也不可互换!

属性 #5: Align Self

align-self属性允许你对特定的项目有与其他项目不一样的对齐方式,它可覆盖align-items属性。虽然它的默认值为auto,但它继承了父元素align-items的属性。除了auto外,其他都与align-items属性完全一致。

#container {
  align-items: flex-start;
}
.square#one {
  align-self: center;
}
// Only this square will be centered.

我们将在两个四方体上应用align-self属性,而其余的四方体则应用align-items: centerflex-direction: row,让我们看看会发生什么:

结论

虽然,我们仅仅是了解 Flexbox 的一些浅层的使用方法,但这些方法足以让你利用 Flexbox 应对大多数水平与垂直对齐的问题。如果你想观看更多的 GIF Flexbox 教程,或者如果本教程对你有所帮助,你可以点击喜欢或留下评论。

感谢你的阅读。


如果觉得文章不错,不妨点个赞。

注:

  1. 本文版权归原作者所有,仅用于学习与交流。
  2. 如需转载译文,烦请按下方注明出处信息,谢谢!

英文原文:How Flexbox works — explained with big, colorful, animated gifs
作者:Scott Domes
译者:IT程序狮
译文地址:http://www.jianshu.com/p/cd69906d7703

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容