ウェブブラウザの最新版のヴァージョンや獲得シェアのパーセンテージがわかる「Outdated Browser」というサイトがあります。
「Google Chrome」、「Firefox」、「Internet Explorer」、「Safari」、「Opera」のそれぞれのデータをアコーディオン風の斬新なレイアウトで見やすく表示させています。

Outdated Browser

5つあるそれぞれの要素にマウスを重ねると、対象となったブラウザのボックスの横幅が広がります。

今日は、最新のCSS3のテクニックの1つ「flexbox」を使って、この「Outdated Browser」と同じレイアウトを再現する方法を紹介します。

ちなみに「flexbox」は「フレックスボックス」または「フレキシブルボックス」と表記されます。

HTMLの記述

まずはHTML部分の記述です。

<ul>
<li>Google Chrome</li>
<li>Mozilla Firefox</li>
<li>InternetExplorer</li>
<li>Apple Safari</li>
<li>Opera</li>
</ul>

ご覧のように何の変哲も無いリスト構造です。
デザイン部分はすべてCSS側で処理するのでシンプルなコードで済みますね。

CSS3の記述

続いてキモとなるCSSの記述です。
こちらも比較的シンプルな構造になっています。

* {
	margin:0;
	padding:0;
}

ul,
li {
	list-style: none;
}

ul {
	display:-webkit-flex;
	display:-moz-flex;
	display:-ms-flex;
	display:-o-flex;
	display:flex;
	height:100vh;
}
 
li {
	-webkit-flex:1;
	-moz-flex:1;
	-ms-flex:1;
	-o-flex:1;
	flex:1;
	transition: -webkit-flex 500ms ease-out;
	transition: -moz-flex 500ms ease-out;
	transition: -ms-flex 500ms ease-out;
	transition: -o-flex 500ms ease-out;
	transition: flex 500ms ease-out;
}
 
li:hover {
	-webkit-flex:3;
	-moz-flex:3;
	-ms-flex:3;
	-o-flex:3;
	flex:3;
}

「flex」を適応させるには、親要素に「display:flex;」を割り当て、子要素では「flex:x;」を指定して分割処理を行います。

なお、この「flexbox」は過去に大規模な仕様の変更が2度ほどあり、バージョンによって記述方法が異なります。
「display:-webkit-box;」や「display:-ms-flexbox;」などと記述するのは旧いバージョンの記述方法になり、最新版では上記のように「display:flex;」を使うようになっています。

参考サイト:CSS Flexible Box Layout Module Level 1

そして、実際に上記のコードを使って実装したサンプルが以下になります。

CSS3 Flexbox Accordion:ウェブデザイン・サンプル

フレックスボックス(flexbox)は未だ対応しているブラウザが限定されるようですが、ご確認いただいた通り、使いこなすと表現の幅が広がる大変に便利なCSSのテクニックになります。
「display:table;」や「display:inline;」などと共にまとめて一緒にして覚えてしまいましょう。