【-webkit-line-clamp】CSSで複数行のテキストに三点リーダー(…)を付ける
やりたい事
テキスト量が未定のエリアで複数行にわたるテキストを、ある決まった行数で三点リーダーに置き換えたい。
(画像の例で言えば4行までにしたい)
1行でいい場合は…
1行でいい場合のノウハウは既に一般化しているので、ここでは軽く触れる程度にする
1 2 3 4 |
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 70px; |
この実装は今現在どのブラウザ、どのデバイスでも使えるノウハウとなっている。
実装
ただし、スマホ向けWebサイト等を制作する場合、様々な端末を対象にするために
画面サイズなどがそれぞれ異なり、決まった文字組みでのマークアップを行う事は難しい。
いわゆるリキッドデザインのような可変のデザインの場合、1行に収まる文字数が変化するので
プログラムによる◯◯文字以上は置き換え、のような仕組みもあまりよろしくない。
そこで 「-webkit-line-clamp」というスタイルを使用する。
以下抜粋
『-webkit-line-clamp』とは指定した行数の最後のテキストに『…』を表示させるプロパティです。使用するときは『-webkit-box-orient』で要素をフレキシブルボックスにしないと指定しても『…』は表示されず、『height』が指定されていない場合は『-webkit-line-clamp』で指定した行数で『…』が表示され、それ以降のテキストは表示されません。 http://wp-p.info/tpl_dictionary_rep.php?cat=dictionary-css&fl=text-overflow
HTML
1 2 3 |
<div class="list__item--cr--item--right"> <p>コアラのマーチを10万回振ってみたらどうなる!?コアラのマーチを10万回振ってみたらどうなる!?コアラのマーチを10万回振ってみたらどうなる!?</p> </div> |
CSS
1 2 3 4 5 6 7 8 9 |
.list__item--cr--item--right p { font-size: 13px; line-height: 1.4em; overflow: hidden; /* ここより↓が必須 */ display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; } |
注意すべき点は、-webkitのベンダープレフィックスを見て分かる通り
現状ではwebkit系のブラウザ(Chrome、safari)のみでしか使うことができない。
ただしスマートフォンに搭載されているブラウザは全てwebkitベースである事を考えれば
スマホサイトにおいては十分実用出来るレベルだろう。(firefoxPhone?知らない子ですね…)
特筆すべき点は文字サイズ、表示文字数が端末によって変わった場合においても
適切な行数で三点リーダーを入れることが出来る点。
APIなどで取得してきたコンテンツの一部を頭出しするような部分でも使用する事が出来るだろう。
関連記事
http://astone.jeez.jp/%e3%80%90-webkit-line-clamp%e3%80%91css%e3%81%a7%e8%a4%87%e6%95%b0%e8%a1%8c%e3%81%ae%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%81%ab%e4%b8%89%e7%82%b9%e3%83%aa%e3%83%bc%e3%83%80%e3%83%bc/http://astone.jeez.jp/wp-content/uploads/2015/10/117H.jpghttp://astone.jeez.jp/wp-content/uploads/2015/10/117H-150x150.jpgProgrammingAndroid,CSS,CSS3,HTML,iOS
コメントを残す