【CSS】テキストを行数制限して3点リーダーで表示させる方法

テキストを行数制限して3点リーダーで表示させる方法 CSS

こんにちは!さこちゃんです。

今回は「テキストを行数制限して3点リーダーで表示させる方法」についてです。

まろんちゃん
まろんちゃん

文字量が多いんだよな〜
3行目以上になったら「…」で表示することなどできるのかな・・・

さこちゃん
さこちゃん

ありまーす!CSSを4行書くだけです。いかにも超簡単です。

デモ確認

デモはこちら。

テキストが3行以上になると「…」になります。

デモページを見る

HTML構造を作る

HTMLはこちらです。画像パスは環境にあわせて書き換えてください。

<body>
<div class="allwrap" id="allwrap">
	<div class="flex-box">
		<div class="img"><img src="./assets/img/demo10_img01.jpg" alt=""></div>
		<div class="txt">
			<p>この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</p>
		</div>
	</div>
</div>
</body>

CSSを書く

次にCSSを書きます。コードはこちらです。

/*レイアウト調整*/
.allwrap {
	position: relative;
	width: 100%;
	height: 100vh;
	max-height: 100dvh;
	display: flex;
	justify-content: center;
	align-items: center;
}
.flex-box {
	width: 50%;
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
}
.img, .txt {
	width: 47%;
}
.img img {
	width: 100%;
	height: auto;
	vertical-align: bottom;
}

/*今回の肝!*/
.txt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}
.txt p {
	font-size: 16px;
	line-height: 1.7;
	text-align: left;
	margin: 0;
}

/*レスポンシブ調整*/
@media screen and (max-width:740px) {
	.flex-box {
		width: 80%;
		flex-direction: column;
	}
	.img, .txt {
		width: 100%;
	}
}

解説

今回のポイントは以下の記述です。

.txt クラスを持つ要素に対して 「最大3行まで表示し、以降は省略(…)」 という表示制御をしています。

/*今回の肝!*/
.txt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

display: -webkit-box;

ブラウザに「この要素をフレキシブルなボックス(伸縮可能な箱)」として扱わせる指定です。複数行の省略表示を可能にするための特殊な表示モードとなっています。

-webkit-box-orient: vertical;

ボックスの方向を「縦」に設定します。つまり、縦に行を積み上げるレイアウトになる(行ベース表示)というわけなのです。

-webkit-line-clamp: 3;

最大「3行」まで表示するという指示です。これが行数制限の中心となる指定となります。数字を変えればその数の最大表示ができます。

例えば-webkit-line-clamp: 10; にした場合、10行までの表示が可能になります。

overflow: hidden;

最後に大事なのがこちら。指定された最大行数(3行)を超える内容は表示しない(非表示にする)という指示です。

おわりに

いかがでしょうか?

今回は、要素をキラッと光らせる方法について解説しました。

CSSアニメーションだけで手軽に再現できるのが便利ですね。

ぜひ参考にしてみてください!