出力:
お元気ですか
コード:
<p>hello <br> How are you </p>
<br>
なしで同じ出力を得るにはどうすればいいですか?
同じHTML構造では不可能なので、Hello
とHow are you
を区別する何かが必要です。
span
sを使用してブロックとして表示することをお勧めします(実際の<div>
と同じように)。
HTML:
<p><span>hello</span><span>How are you</span></p>
CSS:
p span
{
display: block;
}
white-space: pre;
を使用して、要素を<pre>
のように機能させることができます。これにより、改行が保持されます。例:
<style>
p {
white-space: pre;
}
</style>
<p>hello
How are you</p>
これはIE 6またはIE 7では機能しないことに注意してください。私はIE8について知りません。
<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行にする必要があるレスポンシブデザインに役立ちます。
空白と改行の処理を定義するためのいくつかのオプションがあります。コンテンツを例えば<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"
)で両者を分離します。
blockquote[title][cite]:after {
content:attr(title)"\a"attr(cite)
}
以前に言われたことに基づいて、これはうまくいく純粋なCSSソリューションです。
<style>
span {
display: inline;
}
span:before {
content: "\a ";
white-space: pre;
}
</style>
<p>
First line of text. <span>Next line.</span>
</p>
CSSでコードを使う
p {
white-space: pre-line;
}
このコードcssを使用すると、Pタグ内のすべての入力はHTMLでのブレークラインになります。
後で要素に改行を入れるには、それを割り当てます:
display:block;
ブロックレベルの要素の後の非浮動要素は、次の行に表示されます。 <p>や<div>などの多くの要素はすでにブロックレベルの要素であるため、それらを使用するだけです。
しかし、これは知っておくと良いことですが、これはコンテンツのコンテキストにより依存します。この例では、CSSを使用して強制的に改行をしたくないでしょう。 <br />が適切なのは、表示するテキストに意味的にpタグが最も適しているためです。 CSSをオフにするだけの追加のマークアップは不要です。技術的にはexactlyパラグラフではありませんが、<greeting>タグがないため、使用しているものを使用してください。 HTMlを使用してコンテンツを適切に記述することは、より重要です。それができたら、then見栄えを良くする方法を見つけてください。
<pre> <---------------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</pre> <--------------------------------------
OR
<div style="white-space:pre"> <-----------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</div> <-----------------------------------
これは悪い質問に対する悪い解決策ですが、文字通り概要を満たすものです。
p {
width : 12ex;
}
p:before {
content: ".";
float: right;
padding-left: 6ex;
visibility: hidden;
}
他の答えは状況に応じて、改行を追加するためのいくつかの良い方法を提供します。しかし、: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: ' ';}
}
多分誰かが私と同じ問題を抱えているでしょう:
私はdisplay: flex
を持つ要素の中にいたので、flex-direction: column
を使わなければなりませんでした。
<pre>
タグはどうですか。
たくさんのパディングを追加して、テキストを強制的に改行することができます。
p{
padding-right: 50%;
}
レスポンシブデザインの状況ではうまくいきました。テキストを分割するには特定の幅の範囲内でのみ必要でした。
スペースの代わりに
を使用すると、改行を防ぐことができます。
<span>I DONT WANT TO BREAK THIS LINE UP, but this text can be on any line.</span>
これが誰かに役立つ場合は...
あなたはこれをすることができます:
<p>This is an <a class="on-new-line">inline link</a>?</p>
このCSSで:
a.on-new-line:before {
content: ' ';
font-size:0;
display:block;
line-height:0;
}
これはChromeで動作します。
p::after {
content: "-";
color: transparent;
display: block;
}
Overflow-wrap:break-Wordを使用してください。好きです:
.yourelement{
overflow-wrap: break-Word;
}
私の場合、改行する前に入力ボタンが必要でした。
ボタンに次のスタイルを適用しましたが、うまくいきました。
clear:both;
私はあなたがブレークポイントを使うことを望まなかったと思います。あれは正しいですか?もしそうなら、テキストにブレークポイント<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;}
}
私は非常に単純な解決策が好きです、これがもう一つです
<p>hello <span>How are you</span></p>
そしてcss
p {
display: flex;
flex-direction: column;
}
<span class="class_name"></span>
内でコンテンツを宣言する必要があります。それが終わったら改行します。
\A
は改行文字を意味します。
.class_name::after {
content: "\A";
white-space: pre;
}
Vincent RobertとJoey Adamsの両方の回答が有効です。あなたがしたくない場合は、しかし、マークアップを変更し、あなただけのJavaScriptを使用して<br />
を挿入することができます。
マークアップを変更せずにCSSでそれを行う方法はありません。