文章の行数をCSS(-webkit-line-clamp / line-clamp)で制限して見た目を整えた

投稿日:2025年10月06日

はじめに

ブログ一覧を作っていて、スマホのような小さい画面ではタイトルが長くなるとカードの高さがばらつき、サムネイルの下に不自然な空白ができる課題に悩みました。今回の修正では、タイトルの行数を制限して見た目を揃えることで、サムネイル比率を保ちながら一覧の統一感を出した記録を残します。


最初の状態

  • 画面幅が狭い(スマホ等)でタイトルの文字数が多いと右側のテキストが縦に伸び、カードの高さがバラつく。結果として左のサムネイルの下に空白ができてしまう。

  • これまではテンプレート側で {{ post.title|truncatechars:40 }} のように文字数で切っていたが、画面幅に応じた改行には弱い。truncatechars は、文字数を制限して表示するDjangoのテンプレートフィルタです。この例では、タイトル(post.title)を 40文字まで に切り取り、それを超えると自動的に「…」が付きます。

※開発環境の画面です

Bootstrapで解決できない?!

わかる人にはわかると思いますが、このサイトKakuhanAppは、ほぼほぼBootstrapで装飾しています。

Bootstrapは、レスポンシブ対応のWebデザインが簡単にできるCSSフレームワークです。デザインに悩まず手軽に作れるので愛用しています(CSSを書くのがめんどくさい)。

しかし、Bootstrapには今回おこないたい"行数で省略" を実現するユーティリティがないです。そこで、CSS(-webkit-line-clamp / line-clamp)で行数制限ができるらしいので今回はそれで実装してみます。

実装の流れ

今回はカードのサムネイルの高さに合わせて3行に制限することにします。

変更前

<h5 class="card-title">
  {{ recommended_post.title|truncatechars:40 }}
</h5>

 

変更後

まず、CSSで以下のクラスを作成

.title-clamp {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}
このクラスを追加するだけ
<h5 class="card-title title-clamp"> {{ recommended_post.title }} </h5> 

これでタイトルが3行を超えると自動的に省略され、カード全体の高さが揃うようになり、サムネイルの下の大きな空白も改善されました。

おわりに

今回は「Bootstrap のユーティリティだけでは解決できない問題に、最小限の CSS(line-clamp)を追加して対応した」という内容を短くまとめました。テンプレートの変更は最小限、CSS は一箇所に追加するだけで済むので取り入れやすいはずです。


記事一覧に戻る

関連記事

Bootstrapでトーストを使う方法 ― ポップアップ通知の実装 プログラミング
Bootstrapでトーストを使う方法 ― ポップアップ通知の実装
テンプレートで「〜前」の形式で表示する方法 — Django の timesince を日本語化する プログラミング
テンプレートで「〜前」の形式で表示する方法 — Django の timesince を日本語化する
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法

人気記事

はじめまして None
はじめまして
閲覧数: 872
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
閲覧数: 848
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
閲覧数: 253
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
閲覧数: 67
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
閲覧数: 51

おすすめ記事

プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる

記事へコメントする

コメント一覧(0件)

関連記事

Bootstrapでトーストを使う方法 ― ポップアップ通知の実装 プログラミング
Bootstrapでトーストを使う方法 ― ポップアップ通知の実装
テンプレートで「〜前」の形式で表示する方法 — Django の timesince を日本語化する プログラミング
テンプレートで「〜前」の形式で表示する方法 — Django の timesince を日本語化する
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法

人気記事

はじめまして None
はじめまして
閲覧数: 872
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
閲覧数: 848
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
閲覧数: 253
X(旧Twitter)カードを正しく表示するためのHTMLの書き方 プログラミング
X(旧Twitter)カードを正しく表示するためのHTMLの書き方
閲覧数: 67
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる
閲覧数: 51

おすすめ記事

プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編) プログラミング
プログラミング初心者が独学で1からPythonを学習し、資格取得・webアプリ作成まで。(資格取得編)
VScodeでPython、HTML/CSSコードを自動で整形する方法 プログラミング
VScodeでPython、HTML/CSSコードを自動で整形する方法
複数ページの重複モデルを整理して保守性・拡張性を上げる プログラミング
複数ページの重複モデルを整理して保守性・拡張性を上げる

記事へコメントする

コメント一覧(0件)

Share

Top