検索システム実装の案件で、ひらがな50音のボタンを並べる必要がありました。子どもの頃によく見る、右上から縦にあ・い・う・え・お...と並んでいる表のようなデザインです。
今回はIE8にも対応しなければならなかったため、いろいろ考えた結果、あ行・か行といった行毎にリストを作り、float
を利用して並べました。
<ul class="list-syllabary-ja">
<li><span class="linename">あ行</span>
<ul>
<li><a href="#">あ</a></li>
<li><a href="#">い</a></li>
<li><a href="#">う</a></li>
<li><a href="#">え</a></li>
<li><a href="#">お</a></li>
</ul>
</li>
<li><span class="linename">か行</span>
<ul>
<li><a href="#">か</a></li>
<li><a href="#">き</a></li>
<li><a href="#">く</a></li>
<li><a href="#">け</a></li>
<li><a href="#">こ</a></li>
</ul>
</li>
<!-- 以下略 -->
もし最新のCSS仕様が使える場合どのような実装になるかな、と考えてみました。ぱっと思いつくのはやはりCSS Flexible Box Layout Moduleです。
試してみたところ、下記3行で対応できることが分かりました。
.list-syllabary-ja{
display: flex;
flex-flow: row wrap;
writing-mode: vertical-rl;
}
HTMLは、下記のようにあ〜わまで単純にリストに並べるだけです。
<ul class="list-syllabary-ja">
<li><a href="#">あ</a></li>
<li><a href="#">い</a></li>
<li><a href="#">う</a></li>
<li><a href="#">え</a></li>
<li><a href="#">お</a></li>
<li><a href="#">か</a></li>
<li><a href="#">き</a></li>
<li><a href="#">く</a></li>
<li><a href="#">け</a></li>
<li><a href="#">こ</a></li>
<!-- 以下略 -->
今日(2015年1月22日)現在では、Vendor Prefixを使うことで、IE・Chrome・Safariの各最新版で問題なく表示されました。
See the Pen Japanese Syllabary by Hideki Abe (@hideki-a) on CodePen.
余談ですが、calc()
の中でSassの変数を使いたい場合は、インターポーレーションを使えば良いようですね。margin: 0 0 calc(1em - #{$item-margin});
のような記述です。