回答:
同じHTML構造では不可能です。Hello
とを区別するためのものが必要How are you
です。
span
(<div>
実際と同じように)ブロックとして表示するsを使用することをお勧めします。
<br>
が正しいマークアップであるかの典型的な例です。詩のスパンは「間違っている」でしょう。
を使用white-space: pre;
して、要素をのよう<pre>
に動作させ、改行を保持できます。例:
IEについては、これはIE8 +でのみ機能することに注意してください。
pre
はpre-line
ラッピングを許可するよりも優れています。
white-space
CSSルールをトリガーしないため、reactでは機能しません。
<br/>
通常どおり使用しますが、不要な場合は非表示にしdisplay: none
ます。この質問を見つけたほとんどの人は、CSS /レスポンシブデザインを使用して、特定の場所に改行が表示されるかどうかを判断することを期待しています。(そして個人的なものは何もありません<br/>
)
すぐにはわかりませんが、実際にタグを適用display:none
し<br/>
て非表示にすることができます。これにより、セマンティックBRタグと組み合わせてメディアクエリを使用できます。
<div>
The quick brown fox<br />
jumps over the lazy dog
</div>
@media screen and (min-width: 20em)
{
br
{
display: none; // hide the BR tag for wider screens (i.e. disable the line break)
}
}
これは、正確な区切りでテキストを強制的に2行にするレスポンシブデザインで役立ちます。
display: none
解決策は断然最も適切で有用です。
display: inline-block; width: 1em;
代わりになどを使用できますnone
。
<br class='foo'>
さらに制御が必要な場合は、クラスをに適用することもできますが、おかしくなりすぎないでください。
<br/>
それが何をするかに優れています。ホイールを再発明する必要はありません。ありがとう!
空白と改行の処理を定義するためのいくつかのオプションがあります。たとえば<p>
タグにコンテンツを配置できる場合、必要なものを簡単に取得できます。
以下のための改行ではなく空白の保存使用pre-line
(ないpre
中など):
<style>
p {
white-space: pre-line; /* collapse WS, preserve LB */
}
</style>
<p>hello
How are you</p>
別の動作が必要な場合は、次のいずれかを選択してください(WS = WhiteSpace、LB = LineBreak):
white-space: normal; /* collapse WS, wrap as necessary, collapse LB */
white-space: nowrap; /* collapse WS, no wrapping, collapse LB */
white-space: pre; /* preserve WS, no wrapping, preserve LB */
white-space: pre-wrap; /* preserve WS, wrap as necessary, preserve LB */
white-space: inherit; /* all as parent element */
の CSS「\ a」コマンドはキャリッジリターンを生成します。これはCSSではなくHTMLなので、必要なものに近くなります。余分なマークアップはありません。
以下の例では、ブロック引用符でタイトルとソースリンクの両方を表示し、キャリッジリターン("\a"
)で2つを区切ります。
blockquote[title][cite]:after {
content:attr(title)"\a"attr(cite)
}
display:flex
、したがってこのコンテキストでハッキングされている場合は壊れる可能性があります)。派手ではありませんが、実際には、単にモダンなテクニックです。まったく同じマークアップが必要だが、実際には異なる反応をする場合は、それが方法です。
"
–を特殊文字として解析'
できるように\a
するため、単純な引用符は使用しないでください。
CSSでコードを使用する
p {
white-space: pre-line;
}
このコードcssを使用すると、Pタグ内のすべての入力がhtmlのブレークラインになります。
これまで述べてきたことを踏まえて、これは機能する純粋なCSSソリューションです。
<style>
span {
display: inline;
}
span:before {
content: "\a ";
white-space: pre;
}
</style>
<p>
First line of text. <span>Next line.</span>
</p>
input type='text', wrapping the input, and then laying the text over it with a wrapper
div . That also requires
pointer-events:none; `に役立つことがわかりました:before
。
<pre> <---------------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</pre> <--------------------------------------
または
<div style="white-space:pre"> <-----------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</div> <-----------------------------------
要素に改行を入れるには、次のように割り当てます。
display:block;
ブロックレベル要素の後の非浮動要素は次の行に表示されます。<p>や<div>などの多くの要素はすでにブロックレベルの要素なので、そのまま使用できます。
しかし、これは知っておくと良いことですが、これはコンテンツのコンテキストにより大きく依存します。あなたの例では、改行を強制するためにCSSを使用したくないでしょう。意味的には、pタグが表示するテキストに最も適切であるため、<br />が適切です。CSSをハングアップさせるだけのマークアップを追加する必要はありません。技術的にはそうではありません正確に段落が、ない<挨拶>タグがありませんので、あなたが持っているものを使用します。HTMLとよくあなたのコンテンツを記述する方法がより重要である-あなたが持っていることの後に、その後それはかなり見えるようにする方法を見つけ出します。
ここに悪い質問に対する悪い解決策がありますが、文字通り概要に出会うものです:
p {
width : 12ex;
}
p:before {
content: ".";
float: right;
padding-left: 6ex;
visibility: hidden;
}
ex
べきですか?p
そして、e
キーボードの近くには、それは私が求めている理由ですされていないこと
その他の回答は、状況に応じて、改行を追加するいくつかの良い方法を提供します。ただし、:after
セレクターは、リンクのリストに対するCSS制御のためにこれを行うためのより良い方法の1つであることに注意してください。、下記の理由により(および同様のもの)。
目次を想定した例を次に示します。
<style type="text/css">
.toc a:after{ content: "\a"; white-space: pre; }
</style>
<span class="toc">
<a href="#a1">Item A1</a> <a href="#a2">Item A2</a>
<a href="#b1">Item B1</a> <a href="#b2">Item B2</a>
</span>
そして、これがSimon_Weaverのテクニックです。これはよりシンプルで互換性があります。それはスタイルとコンテンツをそれほど分離せず、より多くのコードを必要とし、事実の後に改行を追加したい場合があるかもしれません。ただし、特に古いIEの場合は、依然として優れたソリューションです。
<style type="text/css">
.toc br{ display: none; } /* comment out for horizontal links */
</style>
<span class="toc">
<a href="#a1">Item A1</a><br/> <a href="#a2">Item A2</a><br/>
<a href="#b1">Item B1</a><br/> <a href="#b2">Item B2</a><br/>
</span>
上記のソリューションの利点に注意してください。
pre
)display:block
コメントを)float
またはclear
周囲のコンテンツに影響するスタイル<br/>
またはpre
ハードコードされた改行付き)a.toc:after
、および<a class="toc">
設定br
にタグをdisplay: none
と便利ですが、WordsRunTogetherになってしまう可能性があります。代わりに、次のように、スペース文字に置き換える方が便利だと思います。
HTML:
<h1>
Breaking<br />News:<br />BR<br />Considered<br />Harmful!
</h1>
CSS:
@media (min-device-width: 1281px){
h1 br {content: ' ';}
h1 br:after {content: ' ';}
}
br
さdisplay: inline-block; width: 1em;
れないようにする設定を検討することもできます。
どの程度<pre>
のタグ?
<pre>
。通常の空白文字が必要な場合はどうでしょうか?
たとえば、多くのパディングを追加して、テキストを強制的に新しい行に分割できます。
p{
padding-right: 50%;
}
レスポンシブデザインの場合、テキストを分割するために必要な特定の幅の範囲内でのみ問題なく機能しました。
ビンセントロバートとジョーイアダムスの両方の回答が有効です。ただし、マークアップを変更したくない場合は、<br />
JavaScriptを使用して。
マークアップを変更せずにCSSでそれを行う方法はありません。
:after
それ:before
を使用したり、実行したりできます。
ブレークポイントは常に改行されるため、ブレークポイントを使用したくないと思います。あれは正しいですか?もしそうなら<br />
、あなたのテキストにブレークポイントを追加するのはどう<br class="hidebreak"/>
ですか、それからあなたにそれを非表示にするためにブレークしたいサイズのすぐ上のメディアクエリを使用するようなクラスをそれに与えます<br />
特定の幅でブレークするが、その幅より上にインラインのままであるようにます。
HTML:
<p>
The below line breaks at 766px.
</p>
<p>
This is the line of text<br class="hidebreak"> I want to break.
</p>
CSS:
@media (min-width: 767px) {
br.hidebreak {display:none;}
}
"Tip: The <br> tag is useful for writing addresses or poems."
しないでください。強制改行が必要な場合は、改行してください。
display: block;
。
<br />
要素は非常に正当な理由で存在します。別々の段落であるために改行が必要な場合は、それらを別々の段落としてマークアップします。