質問するログイン新規登録

Q&A

解決済

2回答

754閲覧

一定の幅を超えたら3点リーダーを表示したい

suika11

総合スコア166

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2022/02/14 10:13

編集2022/02/14 10:21

0

0

前提・実現したいこと

画像のようなアカウント名・ユーザーID・投稿時間の3つを横に並列し、アカウント名やユーザーIDが右端まで到達するほど長くなった場合はまずユーザーIDの一部を3点リーダーで非表示、それ以上長くなった場合はアカウント名を3点リーダーで非表示にする処理を作りたいです。投稿時間は3点リーダーを適用せず常に表示したいです。

Twitter画像

該当のソースコード

html

1<div class="user_profile"> 2<a href="{{ route('users.show', $topComment->user) }}" 3class="_ellipsised"> 4<span class="name">{{ $topComment->user->name }}</span> 5<span class="screen_name">@screen_name</span> 6</a> 7<span class="date">{{ $comment->updated_at->diffForHumans() }}</span> 8</div>

css

1.user_profile { 2 display: flex; 3 margin-left: 50px; 4} 5 6.user_profile a { 7 -webkit-line-clamp: 1; 8} 9 10.user_profile .name { 11 display: inline-block; 12 margin-right: 4px; 13 max-width: 440px; 14 font-weight: bold; 15} 16 17.user_profile .screen_name { 18 vertical-align: text-bottom; 19 margin-right: 8px; 20} 21 22.user_profile .date { 23 display: inline-block; 24 color: #999; 25}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答2

0

ベストアンサー

記載いただいたCSSの最初の2つを変更することで、おおむね実現できるかもしれません。

.user_profile { display: flex; margin-left: 50px; align-items: flex-start; } .user_profile a { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }

.user_profile のほうの説明

display:flex のみですと、 aタグの高さが高くなってしまう場合があるため、
念のため align-items: flex-start;を追加しました(align-items:center; 等でも問題ないです)

.user_profile a のほうの説明

以下の3つを追加しました。
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;

line-clampを実現するためには、これらを組み合わせて使う必要があるようです。

参考にした記事:CSS : 「line-clamp」 で表示行数を制御する

投稿2022/02/14 11:48

AsukaKobayashi

総合スコア296

suika11

2022/02/14 12:03

勉強になりました。ありがとうございます
guest

0

直接の解決ではないですが、CSSのみでtruncateするソースコードを貼りますね。(文字を規定の量で切り落とすことを、truncateと言います)

https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/

アカウント名やユーザーIDが右端まで到達するほど長くなった場合はまずユーザーIDの一部を3点リーダーで非表示、それ以上長くなった場合はアカウント名を3点リーダーで非表示にする

この条件をメディアクエリで書くことが出来れば、期待の挙動は実装出来るでしょう。

投稿2022/02/14 11:50

Eskee

総合スコア268

suika11

2022/02/14 12:04

ありがとうございます。とても勉強になりました。また何かありましたらよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問