0

同じ問題を説明し、さまざまな成功を収めているページを何度も見てきました。私がやろうとしているのは、指定された幅を超えてコンテンツを拡大することで、テーブルやdivなどを壊さないように大きな単語を分割できる方法を考え出すことです。パーセント幅の要素に対してこれを行う必要があります。私はすべてを試したような気がしますが、それがハックであっても、解決策がなければなりません。私がこれまでに見つけた最善の解決策は、ハイフネーターjsを使用することです。辞書ファイルにある実際の単語でのみ機能するように見えることを除いて、ほとんどの長い単語で美しく機能します。たとえば、これは私のすべての例でうまく分割されています。

これはテキストの長い文字列であり、ハイフネーターを使用していた場合は、ハイフンでうまく分割され、すべてがうまくいくでしょう

これらのようなものは壊れることはなく、代わりに私のサイトを壊します:

abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

これを使用したいほとんどのサイトでは、ユーザーが作成したテキストをサイトに表示できます。等号やハイフン文字の長い文字列などが一般的です。また、stackoverflowがword-wrap:break-word;を使用してこの問題に対処していることにも気づきました。css(少なくともFirefoxでは)。私はこれを実験して、それがうまく機能することを発見しましたが、事前定義されたピクセル幅を使用する場合にのみ機能し、パーセンテージ幅で機能するソリューションが必要です。私もword-wrap:break-allを使用しましたが、これは機能しますが、代わりに単語を折り返す必要があるときに途中で小さな単語を切り取るため、見栄えが悪くなります。

可能であれば、ハイフネーターはほとんどの場合うまく機能するので、引き続き使用したいと思います。たぶん私はこれをあまりにも長い間見てきましたが、ハイフネーターに、大きすぎる上記のような非単語を分割するように設定できる何らかのオプションがありますか?誰かがこれを実現するためにハイフネーターの正規表現を調整することに成功したのではないでしょうか。

4

2 に答える 2

2

パーセント幅の設定word-wrap: breakも(技術的な意味で)機能します。セル/列のパーセント幅のテーブルでは、table-layoutに設定されていても失敗するようfixedです。これを回避するには、コンテンツに改行のヒントを追加する必要があるようです。

古い改行のヒントはです<wbr>が、一部のブラウザでは問題が発生しています。改行のヒントは、ゼロ幅スペース文字です。これは、そのまま&#x200b;またはそのように記述することができます(UTF-8を使用する場合)。最新のブラウザではうまく機能しますが、古いバージョンのIEでは厄介な影響を及ぼします。最近は後者に投票する傾向がありますが、改行の問題に関する私のページでは、「防弾」でありながら厄介な方法があることを説明しています <wbr><a class=wbr></a>。CSSルールで使用し.wbr:after { content: "\00200B"; }ます。プログラムでページを生成する場合、このような不器用なマークアップは実行可能かもしれません。

このようなヒントは、必要な場合にのみ挿入してください。自然言語の単語には使用しないでください。簡単なアプローチとして、ページにレンダリングするためのユーザー入力を処理する場合、技術的な意味での「単語」(空白以外の最大文字列)に分割し、N文字より長い「単語」ごとにK文字の後の改行ヒント。パラメータNとKは、レイアウトに応じて選択する必要があります。欠点:これにより、文字列にスペースが含まれているが含まれていないかのように「緊急ブレーク」が発生し、長い自然言語の単語も任意にブレークする可能性があります。

おそらく、クライアント側で何かを行うことができます。最初にHyphenator.jsを実行し、次にテキストコンテンツを処理して、テキストコンテンツを任意の空白とソフトハイフンでフラグメントに分割します(\00AD;これを実行するのは後でのみ行う必要があります) Hyphenator.jsはその作業を完了しました)。次に、フラグメントに対して上記のアルゴリズムを実行できます。つまり、長いフラグメントに改行のヒントを追加します。

于 2013-02-04T08:55:33.960 に答える
1

Hyphenatorよりも新しいhttps://github.com/bramstein/hypherもあります

于 2015-02-25T15:23:44.980 に答える