質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.49%
CSS3

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1853閲覧

複数行の文章が長い場合に文末に「...」をつける「-webkit-line-clamp」がうまく当たらない

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/11/05 11:29

編集2016/11/05 12:16

タイトルにある通り、複数行に渡る文の文末に「...」をつけたく、調べていたら、ブラウザは限定されるものの「-webkit-line-clamp」を用いて、「...」をつける行数を指定する方法を見つけ試してみました。
実際に試してみたのがこちらです。

ここではリストの中で使っているのですが、どういうわけかリスト内で使うと「...」の行がどんどん上に上がってきてしまうといういう状況になってしまっています。

どこか私の表記方法に誤りなどはありますでしょうか?
調べても原因がわからないので、教えていただきたいです。

サンプル画像

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

見たところCSSには問題がないと思います。
ちゃんとどれも3行目に「…」が付いてます。
どんどん上がってくるというのはHiro14さんの環境では上から3行目→2行目→1行目ってなるってことですよね?
自分のところでは再現しません…

それとは別にこちらのheightは不要です。これがあると高さが取られて3行以上表示されてしまうので。
残す場合はハックなどでchromeで見た場合height:auto;になるように指定が必要です。

css

1.list-info .title { 2 font-size: 3.8vw; 3 font-weight: 600; 4 margin-top: 0.8vh; 5 margin-bottom: 0.3vh; 6 color: #463a1c; 7 overflow: hidden; 8/* height: 4.5em; 不要です */ 9 width: 100%; 10 display: -webkit-box; 11 -webkit-box-orient: vertical; 12 -webkit-line-clamp: 3; 13}

###追記

css

1.list-info .title { 2 font-size: 3.8vw; 3 font-weight: 600; 4 margin-top: 0.8vh; 5 margin-bottom: 0.3vh; 6 color: #463a1c; 7 overflow: hidden; 8 height: 4.5em; 9 width: 100%; 10}

chrome以外はここまで。

css

1.list-info .title { 2 font-size: 3.8vw; 3 font-weight: 600; 4 margin-top: 0.8vh; 5 margin-bottom: 0.3vh; 6 color: #463a1c; 7 overflow: hidden; 8 height: 4.5em; 9 width: 100%; 10 11 display: -webkit-box; 12 -webkit-box-orient: vertical; 13 -webkit-line-clamp: 3; 14 height: auto; 15}

line-clampが有効なchromeはheight: auto;に書き換える。

投稿2016/11/05 12:11

編集2016/11/05 14:15
gin

総合スコア2722

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/05 12:19

ご回答ありがとうございます。 私のブラウザではこのように見えるという画像を質問に追加したのですが、このように見えてしまうのは私のブラウザに問題があるということなのでしょうか? また、heightについては、line-clampが使えないブラウザがあり、そういった場合に4行目、5行目まで表示されてしまうとかなりデザインが崩れてしまうので意図的に付け加えたものなのですが、そういったことを考慮する場合はどうすればよいのでしょうか?
gin

2016/11/05 12:27 編集

jsfiddleでもそう見えます?? 私のほうではすべて3行目に「…」ついてます。 ちなみにWin7のchromeです。 heightについては書いたようにheightはそのままにして新たにハックでchrome用にheight:auto;で上書きですね。 ちなみにですが、これも私のところでは画像のように3行綺麗に見えてるわけではなく5行目が上半分切れた状態で見えています。heightが4.5文字なので当然と言えば当然ですが…<jsfiddle
gin

2016/11/05 12:40

あとはJSを使用するか、こういうやり方もあります。 これは3行なり4行なりのheightを指定し、そのボックスの右下に:afterで「…」を表示させるってやつです。 http://codepen.io/skwbr/pen/zqQwVZ
退会済みユーザー

退会済みユーザー

2016/11/05 13:34

jsfiddleのスクリーンショットが質問箇所に添付したものになります。 私の状況はkatoyさんが上で説明してくださっている通りで、表示エリアを広げると期待通りの表示が確認できました。 こちら、何らかの属性の影響ということは考えられるでしょうか? 一度表示範囲を広げ、期待通りの表示になってからは狭めても元に戻ってしまうことはありません。 ちなみにこれはモバイル用で、PCサイトは別で作るので、ハックするとすればOpera Miniだけやるという認識であっているでしょうか? (以下がline-clampのブラウザ対応表です) http://caniuse.com/#search=line-clamp ginさんの作られたやつすごいですね。いろいろ調べたのですがこんなやり方目にすることなかったです!! できればSCSSを使わずにCSSでやりたいと思っているので、表示崩れが問題ないのであれば、もともと私が調べたコードでいきたいですが、大変勉強になりました。
退会済みユーザー

退会済みユーザー

2016/11/05 13:42

なぜだかはわかりませんが、自分でいろいろ属性を消していたら「.list-info .title」のmargin-top: 0.8vh;とmargin-bottom: 0.3vh;の二つを消したら私のブラウザでも期待通りに表示することができました!!
gin

2016/11/05 13:45 編集

いや、私が作ったやつじゃないですw 後ろや前に何かくっつけるのはよくやるのでそれをキーに探しただけっすー というかchromeでも環境によって見え方違うっぽいので別のやり方の方がいいような気がします… ハックはかけるならchromeにですよ~
退会済みユーザー

退会済みユーザー

2016/11/05 13:53

これはモバイル専用のデザインでChrome for Androidは対応ってなってますけど、対応していない古いのがあるということですか? そうなのですか。まだ勉強したての初心者なので、探し方も下手なのかもしれません。。
gin

2016/11/05 14:06

対応だからそこにハックをかけるんですよ~ 赤いのは対応していないので通常に「height: 4.5em;」を書きます。 緑のは対応しているのでハックして通常のheightを上書きするので「height: auto;」を書きます。
gin

2016/11/05 14:15

追記しておきましたー
退会済みユーザー

退会済みユーザー

2016/11/05 15:04

本当に全然わかっていなくてすいません。。 モバイルなら全部(Opera Mini以外)対応しているという認識で、(Opera Miniを無視する場合)Chromeとかわけてハックする必要ないと思っているのですが違いますか?
gin

2016/11/05 15:11

あ!! こちらこそすみません「PCサイトは別で作る」を見逃してました…^^; Opera Miniはほぼ無視できるレベルだと思うのでハックも何もいらないかもです。
退会済みユーザー

退会済みユーザー

2016/11/05 15:17

ならよかったです! 実はCSSのハックという言葉もginさんから始めて聞いて調べて知ったので、自分の理解が間違っているのではないかとちょっと心配でした。 いつもご丁寧にいろいろと教えてくださりありがとうございます!!
退会済みユーザー

退会済みユーザー

2016/11/05 15:20

あ、すいません最後に一点確認させてください。 height: auto;はあってもなくても変わらないんですよね? (追記いただいたChrome用のCSSにわざわざ記述がありましたので)
gin

2016/11/05 15:24

「height: auto;」は「height: 4.5em;」を上書きするためのものですね。 今回ほぼほぼ「line-clamp」が効くようなので「height: 4.5em;」は不要。 なので「height: auto;」も不要です~<他に指定がなれけばデフォがautoなので
退会済みユーザー

退会済みユーザー

2016/11/05 15:30

なるほど、そのためでしたか! 最後までありがとうございました。
guest

0

私の環境では、
JSFiddle での表示直後は、質問にあるような表示になります。しかし、表示エリアを少し広くすると、 "..." の位置が意図したように変化します。
どの属性の影響でこのような動作になるかは、私にはわかりませんが...

イメージ説明

投稿2016/11/05 12:51

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gin

2016/11/05 13:05

見た目の行数も3行ですね~ フォントが大きいのかな。 うちは「JavaScript methods are the actions that can be performed on objects. A JavaScript method i…」ここでリーダがでます。
退会済みユーザー

退会済みユーザー

2016/11/05 13:36

ありがとうござます。 私もkatoyさんのご回答を見て試していましたが、全く同じ状況でした。 やはりこれはなんらかの属性が影響してしまっていると考えるのが妥当なのでしょうか? だとしたら地道に検証してみるしかないですね。。
退会済みユーザー

退会済みユーザー

2016/11/05 13:42

なぜだかはわかりませんが、自分でいろいろ属性を消していたら「.list-info .title」のmargin-top: 0.8vh;とmargin-bottom: 0.3vh;の二つを消したら私のブラウザでも期待通りに表示することができました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問