1行のテキストで均等割付・両端揃えを実装する方法をご紹介いたします。CSSのみで実現でき、表などで活用できるので覚えておくと便利かと思います。
CSSを使って1行のテキストで均等割付・両端揃えを実現する方法
以下のような表を作成することを前提として説明いたします。
Safari非対応の均等割付・両端揃えの実装方法
まずは、Safariには非対応ですが、最も簡単な均等割付・両端揃えの実装方法です。
HTMLは以下の通りで、シンプルな表ですね。
<table> <tr> <th>均等割付</th> <td>CSSで均等割付</td> </tr> <tr> <th>均等</th> <td>CSSで均等割付</td> </tr> <tr> <th>割付</th> <td>CSSで均等割付</td> </tr> </table>
CSSでは以下のように指定します。
table { width: 40%; border-collapse: collapse; } th, td { padding: 10px 20px; color: #333; border: solid 1px #aaa; } th { background: #eaf6ff; font-weight: bold; font-size: 16px; width: 120px; text-align: justify; text-align-last: justify; text-justify: inter-ideograph; } td { font-size: 14px; }
重要な点はthの部分です。
th { text-align: justify; text-align-last: justify; text-justify: inter-ideograph; }
「text-align-last: justify;」で最終行を両端揃えにすることで、1行のテキストの均等割付を実現しています。
ただ、ChromeやFirefoxだけなら「text-align-last: justify;」だけで良いのですが、IEやEdgeではtext-align-lastが効きません。そこで「text-align: justify;」と「text-justify: inter-ideograph;」を追加して、IEやEdgeに対応しています。
これで、Safari以外の主要ブラウザはカバーできます。
主要ブラウザすべてに対応した均等割付・両端揃えの実装方法
Safariにも対応したいという場合は、少々面倒ですが下記の方法で実現可能です。
まずHTML側では、以下のように1文字ずつspanで包括します。1文字ずつspanで囲ったテキストをさらに.equalityで包括します。
<table> <tr> <th> <div class="equality"> <span>均</span><span>等</span><span>割</span><span>付</span> </div> </th> <td>CSSで均等割付</td> </tr> <tr> <th> <div class="equality"> <span>均</span><span>等</span> </div> </th> <td>CSSで均等割付</td> </tr> <tr> <th> <div class="equality"> <span>割</span><span>付</span> </div> </th> <td>CSSで均等割付</td> </tr> </table>
CSSでは、以下のように指定します。
table { width: 40%; border-collapse: collapse; } th, td { padding: 10px 20px; color: #333; border: solid 1px #aaa; } th { background: #eaf6ff; font-weight: bold; font-size: 16px; width: 120px; } td { font-size: 14px; } .equality { display: flex; justify-content: space-between; }
.equalityに指定した「display: flex;」「justify-content: space-between;」によって、テキストの横並び&両端揃えを実現しています。
ちょっと無理やり感はありますが、この方法だとSafariにも対応しているため、主要ブラウザすべてに対応したい場合はこちらをお試しください。
あとがき
IE・Edge・Safariがtext-align-lastに対応してくれれば簡単なんですけどね(^^; 主要ブラウザをカバーしようと思うと少々面倒です。
1行のテキストを均等割付・両端揃えしたい時は、ぜひ参考にしていただけると幸いです。