よく使うけど、毎回忘れるので。
環境
- Chrome
ゴール
- 表示領域を超えていれば文言を省略する
- 1行
- 複数行
- アイコン + 文言の表示領域でも正しく省略する
1行で表示領域を超えていれば文言を省略する
<div style="width:150px;border: 10px solid red"> <div class="wrap-text"> ルイズ・フランソワーズ・ル・ブラン・ド・ラ・ヴァリエール </div> </div>
.wrap-text{ white-space: nowrap; // 折り返さないようにする(1行にする) overflow: hidden; // 表示領域を超えたら表示しない text-overflow: ellipsis; // 表示領域を超えたら3点リーダにする -webkit-text-overflow: ellipsis; // FireFox対応 -o-text-overflow: ellipsis; // Opera対応 }
複数行で表示領域を超えていれば文言を省略する
<div style="display:flex;width:150px;border: 10px solid yellow"> <div class="wrap-multitext"> ルイズ・フランソワーズ・ル・ブラン・ド・ラ・ヴァリエール </div> </div>
※ -webkit-line-clampはInternetExplorerで動かないようなので、ブラウザでちゃんと確認する必要があります。
.wrap-multitext{ overflow: hidden; display: -webkit-box; // webkitの機能を使うようにする -webkit-box-orient: vertical; // 縦に折り返す -webkit-line-clamp: 3; // 3行まで表示する }
アイコン + 文言で表示領域が可変になっても省略する
親のコンポーネントをdisplay: flex
を使うだけです。上記例と異なり、アイコンを設定している分の表示領域が少ないのでwidth: 200px
にしています。
CSSについては、上記例で表示したものを使用しています。
<div style="display:flex;width:200px;border: 10px solid black"> <img src="https://cdn.profile-image.st-hatena.com/users/nainaistar/profile.png?1578837502"> <div class="wrap-multitext"> ルイズ・フランソワーズ・ル・ブラン・ド・ラ・ヴァリエール </div> <img src="https://cdn.profile-image.st-hatena.com/users/nainaistar/profile.png?1578837502"> </div>
ソースコード
終わりに
Bootstrap以外でフロントを触ることがなく、FlexBoxをあまり知らなかったのですが、覚えていくと便利ですね。Bootstrapだと細かいマークアップができないので、非常に勉強になりました。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。