テキストオーバーフロー:省略記号が機能しない


264

これは私が試したものです(ここを参照してください):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

基本的に、ウィンドウを小さくすると、省略記号でスパンが縮小するようにします。何を間違えたのですか?


6
省略記号が機能するための要件:stackoverflow.com/a/33061059/3597276
Michael Benjamin

それが機能していないと思ったときに私が抱えていた問題は、幅を十分に長く(10px)設定しなかったことでした。それで、省略を切り捨てていました、ド!
ロッド

回答:


459

あなたは、CSSを持っている必要がありoverflowwidth(またはmax-width)、displaywhite-space

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

補遺 ラインクランプ(マルチラインオーバーフロー楕円)を行う手法の概要が必要な場合は、次のCSS-Tricksページを参照してください。https//css-tricks.com/line-clampin/

補遺2(2019年5月)
このリンクが主張するように、Firefox 68はサポートします-webkit-line-clamp(!)


12
空白のプロパティは、私が欠けていたものでした。ありがとう。
nebulousGirl

65
それはあなたがwhite-space: nowrap;特性を必要とすることを吸う。これで、ブロックテキストの代わりに...で終わるテキストの1行のみを作成できます。
Sven van Zoelen

3
今日、すべての主要なブラウザーが省略記号をサポートしています: caniuse.com/#feat=text-overflow
kazy

1
@basZero Multiline EllipsisはCSSのみではサポートされていません。あなたは他の措置をとる必要があります
yunzen

1
コンテナーがバインドされるように幅を指定する必要があります。overflow:hiddenを設定してブラウザーがはみ出しテキストを非表示にし、次にtext-overflow:ellipsisを設定してブラウザーに特にテキストオーバーフローの非表示を処理する方法を指示する必要があります。
Michael Angstadt 16

46

ブロック要素と最大サイズがあることを確認し、オーバーフローを非表示に設定します。(IE9およびFF 7でテスト済み)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
空白のあるものに対しては、一般にwhite-space:nowrapプロパティも必要になるようです。
Kzqai

上記のコメントの完全な複製。
nebulousGirl

@nebulousGirl:実際にKzqaiのコメントは、HerrSerkerのコメントに投稿されたコメントよりも前でした。
2013年

IEには奇妙な点があります-IEは2番目の単語を折り返しません (IE 11でテスト済み)...図をご覧ください。他のブラウザで期待どおりに動作します(古き良きOpera 12を含む)。
Nux

1
@NuxこれもMS Edgeブラウザで期待どおりに機能していません
yunzen

21

Chromeで複数行を使用する場合:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

YouTubeからインスピレーションを受けた;-)


これは非常に興味深い解決策です。-webkit-*プロパティを使用しますが、すべての主要ブラウザでサポートされています。詳細はこちら:css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

Chromeでの省略記号に問題がありました。ホワイトスペースをオンにする:nowrapで修正されたようです。

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

これとこれだけが私のための仕事をしました

<pre> </pre> 

鬼ごっこ

他のすべては省略をしませんでした...


3

これに出くわす可能性のある人にとってはただの賛成です...私のh2は継承していました

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

これは省略を許していませんでした。どうやらこれは非常にフィニッキーです。


2

以下に、好きな場所のコードを追加してください

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

複数回線の場合

クロムでは、複数行に省略記号を適用する必要がある場合は、このCSSを適用できます。

CSSにを追加して、特定の幅の要素を指定することもできます。

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

CSSに以下を追加して、省略記号を使用してみてください。

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

しかし、このコードは1行のトリムにのみ適用されるようです。テキストをトリミングして省略記号を表示するその他の方法は、次のWebサイトにあります。http//blog.sanuker.com/?p = 631


0

省略記号が機能するようにCSSに次の行を追加します

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

その私たちのそれらのために一定の幅を使用したくない、それはまた、使用して動作しますdisplay: inline-grid。したがって、必要なプロパティとともに、追加するだけですdisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.