跨浏览器弹性布局进阶教程

引言

CSS3 弹性布局模块 —— 短命名叫 Flexbox —— 为我们的 web 开发带来了许多能量和令人兴奋的畅想空间,我们可以快速轻松地搭建复杂的网站布局,摒弃一些我们惯常使用的不合理的 hacks 和 补丁。我的文章 《伸缩布局 — 打开布局天堂之门?》讲述了一些 Flexbox 的基础,本文将是进阶教程,我会带大家看一些高级点的例子,使用 Modernizr 为那些参差不齐的 flexbox 支持情况提供不同的样式,以便提供当前可用的最优的跨浏览器方案。

看下面例子

我为文章做的例子如图1:

图1:最终布局例子的截图

实例包含多层 flexbox 容器,比较急切的话可以先看看最终效果,然后继续探索代码细节。

总体布局

基本的网站布局像这样:


<section>
  <nav>nav>
  <article>article>
  <article>article>
section>

被设置成一个弹性盒子像这样:


section {
  display: -ms-flexbox;
  -ms-box-orient: horizontal;

  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flex;
  display: flex;

  -webkit-flex-flow: row wrap;
  -moz-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
}

注意:与众不同的 IE 专有属性定义在 CSS 规则的最上面,因为当前 IE10 支持不同的 flexbox 语法(从2011年)直到最新标准被 Opera 和 Chrome 支持。更糟的是 Firefox 和其它的 WebKit 浏览器(像 Safari)支持老版本的语法(自2009年)。除此之外, Modernizr 指出 IE10 支持最新的 flexbox,实际不是,因此我们需要像这样兼容 IE10,而不是按 Modernizr 规则。见下文, flexbox 智能退化部分,有详细阐述。

文档流是横向的,但是强制

你可能感兴趣的:(学习笔记,css3,兼容,伸缩式布局)