[解決済み】HTMLのtext-overflowの省略記号の検出
2022-04-07 08:09:51
質問
あるページにブロック要素のコレクションがあります。これらはすべてCSSルールのwhite-space, overflow, text-overflowが設定されており、はみ出したテキストは切り捨てられ、省略記号が使用されるようになっています。
しかし、すべての要素がオーバーフローするわけではありません。
javascriptを使って、どの要素がオーバーフローしているかを検出することはできますか?
ありがとうございます。
追記:私が扱っているHTML構造の例。
<td><span>Normal text</span></td>
<td><span>Long text that will be trimmed text</span></td>
SPAN要素は常にセルに収まり、省略ルールが適用されています。SPANのテキストコンテンツに省略記号が適用されたことを検出したいのです。
どのように解決するのですか?
昔々、このようなことをする必要があったのですが、私が出会ったクロスブラウザで信頼できる唯一の解決策は、ハックジョブでした。私はこのようなソリューションの最大のファンではありませんが、確かに何度も何度も正しい結果を生み出しています。
このアイデアは、要素を複製し、境界の幅をすべて取り除き、複製した要素が元の要素より広いかどうかをテストすることです。もしそうなら、その要素は切り捨てられたことになります。
例えば、jQueryを使用した場合。
var $element = $('#element-to-test');
var $c = $element
.clone()
.css({display: 'inline', width: 'auto', visibility: 'hidden'})
.appendTo('body');
if( $c.width() > $element.width() ) {
// text was truncated.
// do what you need to do
}
$c.remove();
jsFiddleを作って実演してみました。 http://jsfiddle.net/cgzW8/2/
jQueryのカスタム擬似セレクタを作成することもできます。
$.expr[':'].truncated = function(obj) {
var $this = $(obj);
var $c = $this
.clone()
.css({display: 'inline', width: 'auto', visibility: 'hidden'})
.appendTo('body');
var c_width = $c.width();
$c.remove();
if ( c_width > $this.width() )
return true;
else
return false;
};
次に、それを使って要素を探します。
$truncated_elements = $('.my-selector:truncated');
デモの様子 http://jsfiddle.net/cgzW8/293/
これが役に立つといいのですが、ハチャメチャなものです。
関連
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] CSS text-overflow: ellipsis; が効かない?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】Ellipsisオブジェクトは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み] offsetWidth、clientWidth、scrollWidth、-Heightをそれぞれ理解する。
-
[解決済み】CSSで長い文字列を切り捨てる:まだ実現可能か?
-
[解決済み] HTML要素のコンテンツがオーバーフローしているかどうかを判定する