LoginSignup
0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

CSSで複数行のリンクテキストを省略表示し、3点リーダーの色を変更する方法

Last updated at Posted at 2024-06-16

はじめに

テキストを複数行表示して「...」で省略するようなUIを実装することがありました。

テキストを省略して表示するとき、overflow: hidden;white-space: nowrap;text-overflow: ellipsis;を組み合わせて実装していましたが、これは1行のみの場合でしか使用できないようです😱

CSSで実装する方法を調べたので、備忘録として残しておきます。

結論

CSSで複数行のリンクテキストを省略表示し、3点リーダーの色を変更する方法

.truncateUrlText {
  width: 400px;
  overflow: hidden;
  display: -webkit-box;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  color: #1a0dab; 
}

a {
  color: #1a0dab;
}

背景

実務で、以下の要件を満たすようなUIを実装することになリました。

要件

  • テキストを表示する要素の幅は400px
  • テキストは最大2行、入りきらない場合は3点リーダー「...」で省略する
  • 文字の色は#1a0dab
  • テキストを各ページへのリンクにする

実装

例として、「夏目漱石/坊ちゃん」の冒頭の文章を省略して表示します。
テキストはこちらへのリンクにします。

CSSで複数行のリンクテキストを省略表示する方法

まずは画面にテキストを表示します。
次にReact Routerの<Link>を使ってテキストをリンクにしました。

import { Link } from "react-router-dom";

export default function App() {
  return (
   <div className="truncateUrlText">
      <Link
        to="https://www.aozora.gr.jp/cards/000148/files/752_14964.html"
        target="_blank"
      >
        親譲おやゆずりの無鉄砲むてっぽうで小供の時から損ばかりしている小学校に居る時分学校の二階から飛び降りて一週間ほど腰こしを抜ぬかした事があるなぜそんな無闇むやみをしたと聞く人があるかも知れぬ別段深い理由でもない
      </Link>
    </div>
  );
}

続いて、テキストを省略して表示するためのCSSを指定します。

.truncateUrlText {
  width: 400px;
  overflow: hidden;
  display: -webkit-box;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

a {
  color: #1a0dab;
}

結果は以下のようになりました。

スクリーンショット_2024_06_16_19_10.png

「よし、できた!!🎉」 と思ったのですが…

よくみると、3点リーダー「...」の文字色だけが指定した#1a0dabに変わっていません😱😱😱

3点リーダー「...」の文字色を変える方法

3点リーダーの文字色を変更するためには、親要素にも色を指定する必要があるようです。
以下のようにCSSを修正しました。

.truncateUrlText {
  width: 400px;
  overflow: hidden;
  display: -webkit-box;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
+ color: #1a0dab; /* 親要素にも色を指定 */
}

a {
  color: #1a0dab;
}

これで無事に要件を満たすことができました🎉

終わりに

地味に苦戦したCSSでした。意外と使う機会は多そうなので覚えておきます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0