均等割り付けを行うCSSプロパティには、text-align: justify;
等を使いますが、このプロパティは、ブラウザのサポートもばらばらで、うまく使うには苦労が多いプロパティの一つです。
均等割り付けが実際に必要になる場面は、文字数が一行に満たない場合に、項目の幅などをそろえて、配置したいケースが多いのではないかと思います。
このような場合、最もシンプルなのは、table要素を使う方法です。
このような表現をCSSで行う場合は、table要素を使うと便利です。
企画と執筆 |
原稿編集 |
造本設計 |
構成 |
原価と定価 |
用紙材料の準備 |
HTML
<table class="jidori"> <tr> <td>企画と執筆</td> </tr> <tr> <td>原稿編集</td> </tr> <tr> <td>造本設計</td> </tr> <tr> <td>構成</td> </tr> <tr> <td>原価と定価</td> </tr> <tr> <td>用紙材料の準備</td> </tr> </table>
CSS
.jidori{ width:7em; font-size:2em; table-layout:auto; } .jidori td{ padding:0; -moz-text-align-last: justify; text-align-last: justify; text-justify:inter-ideograph; border:none; }
しかし、この方法ではedgeブラウザでは、スタイルが適用されません。これらのブラウザもサポートする場合は、flexを使うと実現できそうです。
以下は、table要素を使っていますが、以下の方法だと必ずしもtableを使う必要はありません。
見た目の調整は、これで出来るのですが、見た目のためにこのような調整を行うことは、均等割り付けに限らず、大きな問題がありそうなので、追記します。
一つ目の問題は、WordPressの検索で支障が出てしまうという事
「企画と執筆」をキーワードに検索をした場合に、以下のようにspan要素で囲まれた文字列は、検索できなくなるという点。
均等割り付け文字を選択して、コピぺした検索文字は、「企+画+と+執+筆」となってしまう事が多く、数文字程度であれば検索は可能ですが、必ずしも「企画と執筆」が結果に表れないので、user-selectプロパティなどで、選択なしにするなど割り切りが必要かもしれません。
以下のように、aria-label="企画と執筆"といった属性をつけておけば、WordPressは、「企画と執筆」を検索できます。
二つ目の問題は、NVDA等WEBページの読み上げ機能を使って読み上げを行う場合の支障
要素で囲まれた部分を指定しても、一文字づつしか読み上げできなくなる問題。
文字は、意味を持っている言葉の単位で要素で囲まないと、意味が失われることになってしまいます。
以下のように、aria-labelを使うなどして、検索 読み上げに対応する必要がありそうです。
<table class="jidori-ie"> <tr> <td> <p class="use-flex" aria-label="企画と執筆"> <span aria-hidden="true">企画</span> <span aria-hidden="true">と</span> <span aria-hidden="true">執</span> <span aria-hidden="true">筆</span> </p> </td> </tr> .... </table>
企画と執筆 |
原稿編集 |
造本設計 |
構成 |
原価と定価 |
用紙材料の準備 |
HTML
<table class="jidori-ie"> <tr><td><p class="use-flex"><span>企画</span><span>と</span><span>執</span><span>筆</span></p></td></tr> <tr><td><p class="use-flex"><span>原</span><span>稿</span><span>編</span><span>集</span></p></td></tr> <tr><td><p class="use-flex"><span>造</span><span>本</span><span>設</span><span>計</span></p></td></tr> <tr><td><p class="use-flex"><span>構</span><span>成</span></p></td></tr> <tr><td><p class="use-flex"><span>原</span><span>価</span><span>と</span><span>定</span><span>価</span></p></td></tr> <tr><td><p class="use-flex"><span>用</span><span>紙</span><span>材</span><span>料</span><span>の</span><span>準</span><span>備</span></p></td></tr> </table>
CSS
.edge .use-flex{ display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; }
その他の方法
letter-spacingプロパティを使う
あいうえお
あいうえお
あいうえお
あいうえお
HTML
<div class="letter-spacing"> <p><span>あいうえお</span><br> <span>あいうえお</span><br> <span>あいうえお</span><br> <span>あいうえお</span></p> </div>
CSS
.letter-spacing span:nth-of-type(2){ letter-spacing:0.5em; } .letter-spacing span:nth-of-type(3){ letter-spacing:1em; } .letter-spacing span:nth-of-type(4){ letter-spacing:2em; }
Note
均等割り付けをtable要素で行う場合、td要素の幅を整える必要が生じます。
table-layout:fixed;
を使う場合には、該当のセルの幅だけでなく、行内のすべてのtd要素と、table要素に幅を指定する必要があります。
レスポンシブデザインを行う場合は、領域からはみ出す場合にスクロール表示する等のテーブルのレスポンシブ設定も併せて検討する事をお勧めします。
列ごとのスタイルを指定する場合のサンプル
<table class="my-table"> <colgroup> <col span="1" class="my-table-col-1"> <col class="my-table-col-2"> <col class="my-table-col-3"> </colgroup> <tr> <th>ISBN</th> <th>Title</th> <th>Price</th> </tr> <tr> <td>3476896</td> <td>My first HTML</td> <td>$53</td> </tr> <tr> <td>5869207</td> <td>My first CSS</td> <td>$49</td> </tr> </table>
CSS
.my-table{ width:500px; table-layout:fixed; } .my-table-col-1{ width:100px; } .my-table-col-2{ width:200px; } .my-table-col-3{ width:200px; }
colgroup col要素を使わないで列のスタイルを指定する場合は、
.my-table{ width:500px; } .my-table th:nth-of-type(1), .my-table td:nth-of-type(1){ background-color:#ecf0f1; width:100px; } .my-table td:nth-of-type(2){ background-color:transparent; width:200px; } .my-table td:nth-of-type(3){ background-color:transparent; width:200px; }
忘れちゃだめ
ゴミ出しは、水曜日ですよ
生きてるだけで、丸儲け
I am happy just to go.
- 日時 2100年3月1日
- 場所 仙台市
- 参加費用 無料
Photo by Federico Bottos on Unsplash
Photo by Joshua Jordan on Unsplash