目次
背景
CSS ワードブレーク、改行
スペース変換
ブラウザがスペースを自動的に圧縮するのはなぜですか?
总结
ホームページ ウェブフロントエンド htmlチュートリアル CSS のワードラップとワードブレイクを本当に完全に理解していますか_html/css_WEB-ITnose

CSS のワードラップとワードブレイクを本当に完全に理解していますか_html/css_WEB-ITnose

Jun 21, 2016 am 08:47 AM

背景

ある日、上司がグループ内で、なぜ英語の単語が切り捨てられたのかを報告しました。

明らかに、これはフロントエンドのせいであり、私たちが責任を負わなければなりません。この問題は単純すぎるため、CSS に 2 行の属性を追加するだけで数分で解決できます。

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

コードを送信してページを更新してください。消去しましたが、単語の分割がまだないのはなぜですか?不可能! ! ! これら 2 つの属性に互換性の問題や制限はありますか?足を痛めないよう、詳しく見てみましょう。

CSS ワードブレーク、改行

キーワード: ワードブレーク、ワードラップ

事前に宣言: 上記の問題はこれら 2 つの属性で解決できます問題はありません。ここで知識を深め、定着させたいだけです。理由を知りたい学生は次のセクションを直接読んでください。

ワードブレークとワードラップはどちらも比較的一般的な属性であり、ワードブレークや省略記号のオーバーフロー表示などの一般的な機能に必要です。しかし、それらが正確に何を意味し、どのような特性を持っているのか、よく分からない人も多いかもしれません。とにかく、わかりません。インターネットで調べて使うたびに、この 2 つの属性はよく似ていて、いつも思い出せません。

さあ、まずドキュメントを読みましょう。

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

normal ブラウザのデフォルトの改行ルールを使用します。 break-all では単語内での改行が許可されます。 keep-all は半角スペースまたはハイフンでのみ改行できます。

http://www.w3school.com.cn/cssref/pr_word-break.asp

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

normal のみ許可されていますハイフネーションポイントにより改行されます (ブラウザはデフォルトの処理を維持します)。 break-word 長い単語または URL アドレス内の改行。

http://www.w3school.com.cn/cssref/pr_word-wrap.asp

理解できましたか?とにかく、理解できないようです。

写真を見るともっと良く見えます。

http://www.w3school.com.cn/tiy/t.asp?f=css3_word-wrap

私はそれを信じますおそらく理解できるでしょうか。簡単に要約します。

  1. 単語区切り 単語を行末に配置できない場合、その単語を行内に配置する方法を決定します。 Break-all: 押し込めない場合は、残りを次の行に表示します。横暴なタイプ。 keep-all: もう離せないなら、別の行に表示します。もう離せないなら、私は引き下がりません。傲慢なタイプ。
  2. word-wrap 行末が収まらない場合、単語内での行折り返しを許可するかどうかを決定します。 通常: 単語が長すぎる場合は新しい行に表示され、1 行を超える場合は改行で表示されます。ライン、オーバーフローします。 Break-word: 単語が長すぎる場合は、単語を折り返しても長すぎる場合は、単語を折り返してください。
  3. 上記の改行はすべて英語の単語に関するものです。CJK (中国語/日本語/韓国語) などの言語については忘れてください。信じられない場合は、以下をお読みください。 text

研究によると、漢字の順序は必ずしも読みに影響しないことがわかっています。たとえば、この文を読んだ後、すべての文字が乱れていることがわかります。

このようにすると、単語を区切るだけでなく、スムーズに読むことができます...

理論的には、 word-break: keep-all;word-wrap を追加します。 Break-word; 他にも落とし穴があるようです。

スペース変換

キーワード: ホワイトスペース

ワードブレークとワードラップの使用が正しいことを確認したら、独自のコードのチェックを開始します。パケットをキャプチャした後、バックグラウンドで生徒が返したテキスト内のすべてのスペースが に置き換えられていることがわかりました。

何?代わりにエスケープ文字を使用する理由は何ですか?なぜ CSS はこのエスケープされたスペースを認識しないのでしょうか?

私はバックグラウンドでクラスメートに電話して、「昔、あるフロントエンドの問題を解決するためにこれをやったんだ」と言いました。頭を掻いて思い出してみたら、確かにそうだった。ブラウザは自動的に複数のスペースを 1 つのスペースに圧縮して表示するためです。ユーザーの元の入力を復元するために、スペースは HTML エスケープされます。

  1. 多くのユーザーは、改行したり、広い文字間隔を実現するためにスペースを使用します。
  2. 文字を描くのも楽しいですが、スペースを圧縮するとすべてが汚くなります。キャラクターの描き方が分からない方は以下をご覧ください

プロのキャラクター描画制作者が全角スペースを使って描きますので、ブラウザのスペース結合を心配する必要はありません問題

わかりました、それではまだタッチできません。

ブラウザがスペースを自動的に圧縮するのはなぜですか?

  1. これが標準です、それだけです故意https://www.w3.org/TR/REC-html40/struct/text.html#h-9.1
  2. スペースが自動的に圧縮されない場合、HTML を記述するときに 1 行しか書くことができません。そうしないと、このコード内に大きな空白スペースができてしまいます。
  3. <div><div>bananas</div></div>
    ログイン後にコピー

このように規定されているため、ピットを埋めてしまうと、必ず方法を見つけます。空白について考えてみましょう。ホワイトスペース ナラップ属性は、特殊効果と連携するために頻繁に使用するだけです...実際には、ロックが解除されていない姿勢がさらにあります。

white-space: normal | nowrap | pre | pre-wrap | pre-line 我们重点关注pre开头的几个属性。pre是preserve(保留)的缩写。没错,它就跟保留空格有关系。
ログイン後にコピー

pre: すべてのスペースと復帰を保持し、改行を許可しないでください。 pre-wrap: すべてのスペースと復帰を保持しますが、改行は許可します。 pre-line: スペースを結合し、改行を許可します

意思简单明了,好像也不用解释什么。

所以我们的解决方案来了:后台按照用户的输入的原始空格返回,不用做转义,前端加上

word-break: keep-all;word-wrap: break-word;white-space: pre-wrap;
ログイン後にコピー

蹭蹭蹭修改完,貌似没什么问题。

不过,这些个属性都是作用于Text上的,而我们的页面里有很多都是富文本,如果将pre-wrap作用于富文本上的父节点上也会有同样的功效吗?带着疑问,测试了几个富文本,果然出现了大段空白….

富文本里的html标签之间有空格。

有兴趣的同学可以在

http://www.taoba.comhttp://www.qq.com

的body上加上white-space:pre-wrap看看效果。

那富文本的问题要怎么解决呢,黑科技登场了!!

无法反抗,那就享受吧。既然浏览器会压缩多个空格,那只要保证文本里每次只有一个空格相邻不就可以了。□ -> □□□ -> □ □□□ -> □ □□□□□ -> □ □ 自动规避了浏览器的合并空格策略。

这个思路来自于富文本编辑器,写过富文本编辑器的同学可能会不屑一顾,这个方案我们都用烂了.. 感谢你们!!(写个富文本编辑器是学习前端的最佳方式,欢迎闲的蛋疼的同学快去踩坑)

通知后台同学按照这个规则来改,问题搞定。

总结

  1. word-wrap: 决定句尾放不下单词时,单词是否换行
  2. word-break: 决定单词内该怎么换行
  3. 平文本可以配合white-space: pre-wrap来解决多空格压缩显示问题
  4. 富文本采用的解决方案是对空格进行间隔html转义,这种方法更灵活,可以适应不同的场景,也适用于平文本。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

WebアノテーションにY軸位置の適応レイアウトを実装する方法は? WebアノテーションにY軸位置の適応レイアウトを実装する方法は? Apr 04, 2025 pm 11:30 PM

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? Apr 05, 2025 am 06:15 AM

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

HTML、CSS、およびJavaScript:Web開発者に不可欠なツール HTML、CSS、およびJavaScript:Web開発者に不可欠なツール Apr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

See all articles