Flexbox 是一个强大的新生CSS布局模块,完全脱离于传统的web开发实践。网上有很多相关的文章,大都关注于规范的细节,导致文章冗长,难懂,甚至有些晦涩。相反,对于设计师和开发者如何使用 flexbox 解决布局问题的讨论相当少,至此,这篇文章出现了。
从基础层面上来讲,flexbox有三个特性是设计之根本。但也是在很长一段时间内单纯使用CSS很难或者不可能完成任务:对齐方式,排布和顺序。
Flexbox在最终形成今天的规范之前,历经了三次迭代。每一次迭代都伴随着不同的属性名,在不同浏览器下有着相应的特定前缀。而现在,我们所处在这样的时刻,所有的浏览器都支持无前缀的终极规范,但是想要兼容低版本的浏览器还有很多坑要填。正因如此,我强烈建议你按照 flexbox 的最终规范编写代码,并且使用最新的浏览器进行测试,然后再去实现向前兼容。想要让你编写的代码同时兼容所有的浏览器是一件很头疼的事。
尽管flexbox可以和其它的CSS布局系统一同工作,但是在开始使用新的系统之前,丢掉以前在web布局中的假设和实践很重要。这是一种全新的工作方式,如果坚持以前的思维,你将受到阻碍。
你可能偶尔听到“flexbox 是用来干啥干啥的”。诚然,其它的布局系统会很快的补充上 flexbox——比如 grids 和 regions,但这种称述并不完全准确。CSS不是语义化的,没有哪一个 CSS 特性就是固定做某件事情的。你可以使用任意的 CSS 来完成你的需求,唯一的问题是什么样的代码才能更高效的实现目标。正如我们看到的,flexbox 解决了设计者在布局上正面临的诸多问题。
Flexbox以前的几个版本给现在的开发者们带来了一些风险:很可能读到一篇没有指明书写时间的文章,最后发现自己正在看2009年的flexbox 规范说明(现在已经废除)所以,时刻谨慎小心,提高警惕。