10文字までの文字列を表示できるようにしたい。文字列が 10 文字を超える場合は、末尾に「...」を追加したいと考えています。
たとえば、次の文字列があるとします。
'helloworldmynameisryan'
私はそれを次のように表示したい:
'helloworld...'
次のように、文字列を div に表示しているだけです。
<div>DisplayMessage</div>
文字列が 10 文字を超える場合にのみ適用される、作成できるクラスはありますか?
10文字までの文字列を表示できるようにしたい。文字列が 10 文字を超える場合は、末尾に「...」を追加したいと考えています。
たとえば、次の文字列があるとします。
'helloworldmynameisryan'
私はそれを次のように表示したい:
'helloworld...'
次のように、文字列を div に表示しているだけです。
<div>DisplayMessage</div>
文字列が 10 文字を超える場合にのみ適用される、作成できるクラスはありますか?
残念ながら、CSS のみを使用してこれを行うための適切なクロス ブラウザーの方法はありません。「text-overflow」は、必要に応じて文字列の長さではなく、文字列の幅に依存します。
これを実現するには、JavaScript で文字列の .length プロパティを使用できます。
function ellipsify (str) {
if (str.length > 10) {
return (str.substring(0, 10) + "...");
}
else {
return str;
}
}
お役に立てれば。
実際、Firefox はこれをサポートするようになりました。「切り捨て」ようとしているものに、ブロック レベルの書式設定と幅 (親である可能性があります) があることを確認する必要があります。
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display:block;
width : 100px; /* this could be defined on any parent */
}
serversideスクリプトを使用しjavascriptないと、これを行うことはできません。
以下の関数を使用します。
function LimitCharacter($data,$limit = 20)
{
if (strlen($data) > $limit)
{
$data = substr($data, 0, strrpos(substr($data, 0, $limit), ' ')) . '...';
return $data;
}
else
{
return $data;
}
}
と呼ぶLimitCharacter($yourString,5);
Javascript
var str = 'Some very long string';
if(str.length > 10) str = str.substring(0,10)+"...";
CSS
.limtiCharClass {
-o-text-overflow: ellipsis; /* Opera */
text-overflow: ellipsis; /* IE, Safari (WebKit) */
overflow:hidden; /* don't show excess chars */
white-space:nowrap; /* force single line */
width: 300px; /* fixed width */
}
これは省略記号と呼ばれ、ブロック要素で使用できます。
ただし、Firefox では機能せず、CSS で幅を文字単位で指定できないため、幅を正確に 10 文字に設定することはできません。
正確に 10 文字と Firefox との互換性が必要な場合は、javascript またはサーバー側のソリューションを使用する必要があります。
省略記号を確認してください: http://www.quirksmode.org/css/textoverflow.html
またはこれを試してください:
.ellipsis{
white-space:nowrap;
overflow:hidden;
}
.ellipsis:after{
content:'...';
}
このためのjQueryプラグイン:
http://devongovett.wordpress.com/2009/04/06/text-overflow-ellipsis-for-firefox-via-jquery/
省略記号は css3 関数であり、さまざまなブラウザーでテストすると問題が発生します。簡単な回避策は、オーバーフローを非表示にして div またはスパンに特定の with を定義し、「...」という背景画像を追加することです。
quirksmodeによると、次のような長いテキストがある場合
<div>11111111111111111111111111111111111111111111111111111111</div>
これをラップするには、多くの方法があります。<wbr>以下のようなタグ を使用します
<div>111111111111111111111111111<wbr>11111111111111111111111111111</div>
111111111111111111111 111111111111111111111のように表示されるか、­の代わりに使用すると、出力は
111111111111111111111-
1111111111111111111111
または、JS ソリューションを探している場合は、これを使用してください。