CSSで<br>を無視しますか?


114

<br>一部の見出しのように改行が挿入されているサイトで作業しています。ソースHTMLを編集できない場合、CSSでこれらの改行を無視できる方法はありますか?

私はモバイルでサイトを最適化しているので、JavaScriptを使いたくありません。


1
@Ben Johnson mk2:あなたの質問への答え:「Firefoxとオペラに対する@Aneesh Karthik Cの回答の解決策が欲しい」は、br要素の使用では不可能です!その理由はすでに何度も説明されています!私の答えでは、有効で堅牢なクロスブラウザーの方法で目標を達成するための代替方法を示しました。
Netsurfer、2014

回答:


198

cssを使用すると、brタグを「隠す」ことができ、それらは効果がありません。

br {
    display: none;
}

特定の見出しタイプ内の一部のみを非表示にする場合は、CSSをより具体的にします。

h3 br {
    display: none;
}

11
Aneeshの回答も必ず確認してください。これは関連性があり、enobrevが彼の中で考慮しなかった問題を修正します。
Rick Calder

3
同意し、アニーシュの答えは素晴らしい追加です。 stackoverflow.com/a/18040142/14651
enobrev 2013

2
このソリューションはFirefoxでは機能しません。<br/>の周りにスペースがない場合は、<br/>の周りの単語を組み合わせます。これがサンプルです。下の
shinesecret

1
レスポンシブデザインを目標とする場合、クロスブラウザソリューションは@Netsurferだけです。述べられているとおりの質問には正確には答えませんが、最新のすべてのブラウザーで目標を達成します。
Andrew Lundin、2014

94

注:このソリューションは、疑似要素を自己終了タグに誤って適用するWebkitブラウザーでのみ機能します。

上記の回答の補足として、単に無視するのではなくスペースを挿入する必要がある場合があることに注意して<br>ください。

たとえば、上記の答えは変わります

Monday<br>05 August

Monday05 August

毎週のイベントカレンダーをフォーマットしようとしたときに確認したので。「月曜日」の後にスペースを挿入することをお勧めします。これは、CSSに以下を挿入することで簡単に実行できます。

br  {
    content: ' '
}
br:after {
    content: ' '
}

これは

Monday<br>05 August

のように見える

Monday 05 August

カンマで区切る場合は、content属性をに変更br:afterする', 'か、必要なものを入れ' 'て区切り文字にすることができます。ところで

Monday, 05 August

きちんと見えます;-)

参考までにこちらをご覧ください。

上記の回答のように、タグ固有にしたい場合はできます。このプロパティをtag <h3>で機能させる場合と同様に、たとえばh3before brとを追加するだけbr:afterです。

疑似タグに対して最も一般的に機能します。


2
とてもとても天才です!
jon 2013

1
よくやった、実際にそれを無効にすることの結果について実際に考えている!
Rick Calder

10
良い点ですが、これはFirefoxとIEを搭載したWebkitブラウザ(Chrome&Safari)でのみ機能するようです。この手法は機能しません。FirefoxとIEでjsfiddle.net/nicooprat/ZHxNAを確認してください... brを置き換える方法のアイデアそれはすべての主要なブロウザーで動作するようにスペースを持っていますか?
firepol 2013

6
@firepol:実際には、FirefoxとIEは "正しい"処理を行っています。これ<br />、疑似要素が機能しないはずの要素の 1つだからです。そしてcontent、疑似要素でのみ機能します。
ScottS 2014

7
これは、主に@ScottSがすでに書いたもののため、非常に間違った解決策です。「コンテンツ」は疑似要素でのみ機能することになっており、疑似要素は自己終了タグでは機能しないことになっています。これは今のところ機能する可能性がありますが、このソリューションを将来性のあるものと呼ぶことは敢えてしません。
nd_macias 14

16

スタイルに追加すると

br{
    display: none;
}

その後、これは機能します。古いバージョンのIEで動作するかどうかはわかりません。


3
これは以前に投稿されたもので、投票数は少なくなっています。なぜですか?
Mr_Green

時々、私たちは無視されます;(
Tim B James

@TimBJames FIREFOXでは機能しません。上記の
shinesecret

12

これが私のやり方です:

br { 
    display: inline;
    content: ' ';
    clear:none;
}

6

置換された要素に対して「定義されていない」疑似要素に依存するため、空白メソッドを機能さspanせるbr場合は、の代わりに要素を使用できます。

HTML

<p>
   To break lines<span class="line-break">in a paragraph,</span><span>don't use</span><span>the 'br' element.</span>
</p>

CSS

span {white-space: pre;}

span:after {content: ' ';}

span.line-break {display: block;}

span.line-break:after {content: none;}

デモ

改行は、適切なスパン要素をに設定することで簡単に実現できdisplay:blockます。

HTMLマークアップでIDやクラスを使用することで、CSSでスパン要素のすべてまたは組み合わせを簡単にターゲットにしたり、などのCSSセレクターを使用したりできますnth-child()

たとえば、レスポンシブレイアウトのメディアクエリを使用して、さまざまなブレークポイントを定義できます。

また、Javascript(jQuery)でクラスを追加/削除/トグルすることもできます。

この方法の「利点」はその堅牢性です-疑似要素をサポートするすべてのブラウザーで機能します(参照:使用できる-CSSで生成されたコンテンツ)。

別の方法として、疑似要素を介して改行を追加することもできます。

span.break:before {  
    content: "\A";
    white-space: pre;
}

デモ


4
「ソースHTMLを編集できないと仮定して」という質問のこの部分を見逃しましたか?
ScottS 14

1
@ScottS:いいえ、しませんでした。多分あなたはその部分を見逃しました:「Firefoxとオペラに対する@Aneesh Karthik Cの回答に対する解決策が欲しい」(バウンティを始めたのはOPではないため)。そして、これに対する答えは、<br>少なくともクロスブラウザでは不可能です。だから私は代替案を示しました。
Netsurfer、2014

2
いいえ、私はその部分を見逃していませんでした(そのOPは賞金とは異なり、アニーシュの答えに焦点を当てています)。しかし、Aneeshの答えは、「CSSで<br>を無視しますか?」という質問全体のコンテキストにあります。htmlを実際に制御している場合、要素を削除するだけで<br>問題が解決することは明らかです(おそらく、要素をスペースで置き換えます)。したがって、質問全体が懸念している問題全体は、htmlを制御できない場合です。彼らがそれを解決するために(何らかの理由で)javascriptを実際に使用したくないという追加の規定により複雑になりました。
ScottS 2014

<br>CSSで無視する方法」という質問 すでに答えられました。そして、あなたがそれを変更したいという意味ではないHTMLを制御している場合にのみ、あなたはそれを変更したいのです。しかし、レスポンシブデザインでは、改行を制御することが望ましい場合があります(自動折り返し以外)。そして、そのような場合、CSS(メディアクエリ)によって制御されない空白がある方法は、目標を達成するための少なくとも「1つの方法」です。
Netsurfer 14

上記のソリューションがFirefoxで機能しなくなったため、これは私にとってよりうまくいきました。
Christos Hrousis 16年

3

私にとってはこのように見えます:

Some text, Some text, Some text

br {
  display: inline;
  content: '';
}

br:after {
  content: ', ';
  display: inline-block;
}
<div style="display:block">
  <span>Some text</span>
  <br>
  <span>Some text</span>
  <br>
  <span>Some text</span>
</div>


1

そのためには、次のようにします。

br{display: none;}

そして、それがいくつかのPREタグの内部にある場合、それが可能で、PREタグを通常のブロック要素のように動作させたい場合は、次のCSSを使用できます。

pre {white-space: normal;}

または、次の ようなAneesh Karthik Cのスタイルに従うこともできます。

br  {content: ' '}
br:after {content: ' '}

わかったと思います


私はあなたが擬似要素のようなことにポイントを逃したと思う::beforeし、::after少なくともなどの「置換要素」の「未定義」ですbr。したがって、信頼できるブラウザの動作が一貫することは決してありません。あなたができる唯一のことは、これらの要素で疑似要素使用ないことです!
Netsurfer、2014

1

あなたの質問によると、FirefoxとOperaでAneesh Karthik Cアプローチを使用してこの問題を解決するには、 "float" right "属性を追加する必要があります。

ここで例を確認してください。このCSSは、Firefox(26.0)、Opera(12.15)、Chrome(32.0.1700)、Safari(7.0)で動作します。

br {
   content: " ";  
   float:right; 
}

これがあなたの質問に答えてくれることを願っています!!


contentプロパティは、CSS疑似要素にのみ影響します。したがって、デモではまったく役に立ちません。そして、aを「中和する」方法brはすでに回答されています(複数回)。問題は条件付きの空白についてです。また、これには擬似要素を使用する必要があるため、では機能しませんbr
Netsurfer、2014

質問をよく読んだら。あなたは答えを理解するでしょう。上記の答えは、display:noneに設定するだけで<br>を回避するのに最適です。しかし、彼がFFとOpera for Aneeshソリューションで発生している問題にどのように対処できるかを知りたい2番目の質問に従って。
shinesecret 2014

質問だけでなく、すべての回答とコメントも注意深く読みました。のコンテンツプロパティbrは単にナンセンスです!そして、私はあなたの答えの残りが「条件付きの空白と線のブレカ」とどう関係しているのかまだわかりませんか?もう少し詳しく説明してもらえますか?
Netsurfer、2014

1
br要素の周りにすでにスペースがあるので、あなたの例は誤解を招くものです。それらを削除すると、スペースを追加することが機能しないことがわかります。
ScottS 2014

1
この例では、3つのbr要素があり、最初と最後の要素の前後にスペースがあります。実際には機能していないのに、ソリューションが機能しているように見えるのはこれらのスペースです。これらのスペースを削除すると、修正した例で行ったように、Firefoxでソリューションがスペースをまったく追加していないことがわかります。
ScottS 2014

0

この質問はすでに解決されているようですが、受け入れられた回答ではFirefoxでの問題は解決されませんでした。Firefox(およびおそらくIEは試していませんが)は、「コンテンツ」タグのコンテンツを読み取るときに空白をスキップします。なぜMozillaがそうするのか私は完全に理解していますが、問題の共有をもたらします。私が見つけた最も簡単な回避策は、以下に示すように、通常のスペースの代わりに分割できないスペースを使用することでした。

.noLineBreaks br:before{
content: '\a0'
}

見てください


1
なぜあなたのバイオリンはbefore要素を持たないのbrですか?brフィドルのhtml もありません。問題の一部は、一部のブラウザでは動作beforeしないことbrです。
ScottS 2014

仕様に記載されているように、これはかなり予想される動作です
。2.5.1

Thaは確かに奇妙です。プロジェクトに適用するとうまくいきます。私のテキストはすべてHTMLではありませんが、変更しているコンテンツはデータベースからのものです。申し訳ありませんが、私のanwserは役に立ちませんでした。
Santo Guevarra、2014

0

はい、これは無視できます <br>。これは、特にモバイルデバイスのブレークを削除する必要があるレスポンシブデザインの場合に必要になることがあります。

HTML

<h2>

  Where ever you go <br class="break"> i am there.

</h2>

モバイル用CSSの例

/* Resize the browser window to check */

@media (max-width: 640px) 
{
  .break {display: none;}
}

このCodepenをチェックしてください:https://codepen.io/fluidbrush/pen/pojGQyM


-1

コメントに変換するだけです。

またはこれを行うことができます:

br {
display: none;
}

しかし、あなたがそれを望まないなら、なぜそこに置くのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.