PC専用に作られ、brタグを多用したwebページのテキスト表示を別のデバイス(モバイルなど)で見ると、行の表示文字数が変わって、意図せぬところに強制改行が入り、それに自動改行が加わるため、とても見づらい崩れたレイアウトになることがあります。そこで、brタグが多用された出来合いのwebページのbrタグをCSSを使って無効にする方法を考えてみます。
単にbrタグを無効にするだけなら、
br {display:none} で可能です。
サンプルはいずれも幅610px(paddingを含めて)のdivにテキストを配置し、自動改行少し手前でbrタグにより強制改行しています。目印としてbrタグの一つ手前の一文字をspan要素で囲み、色を赤にしています。
サンプル(1)は、メディアクエリを使い、画面幅が狭くなり、自動改行が入る幅750px(div幅幅600px)付近で、brタグを無効にしています。同時に目印の赤色文字を青にします。
サンプル(2)は、:target疑似クラスを用いて、「brタグを無効にする」をクリックすると、ダミーのページ内リンク「
<span id="target01"></span>」に飛び、間接セレクタで兄弟要素である「
<div class="textbox">」の子要素であるbrタグを無効にし、同じく子要素である目印の文字のspan要素を青にします。
サンプル(1)
ダミーテキスト:吾輩は猫である。名前はまだ無い。どこで生れ
たかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所
でニャーニャー泣いていた事だけは記憶している。吾輩はここで
始めて人間というものを見た。しかもあとで聞くとそれは書生と
いう人間中で一番獰悪どうあくな種族であったそうだ。
サンプル(2)
ダミーテキスト:吾輩は猫である。名前はまだ無い。どこで生れ
たかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所
でニャーニャー泣いていた事だけは記憶している。吾輩はここで
始めて人間というものを見た。しかもあとで聞くとそれは書生と
いう人間中で一番獰悪どうあくな種族であったそうだ。
brタグを無効にする
htmlソース(サンプルの順とclass名のナンバーは逆です)
<h3 style="margin:20px 0 8px 15%;">サンプル(1)</h3>
<div class="textbox2">ダミーテキスト:吾輩は猫である。名前はまだ無い。どこで生<span>れ</span><br>たかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした<span>所</span><br>でニャーニャー泣いていた事だけは記憶している。吾輩はここ<span>で</span><br>始めて人間というものを見た。しかもあとで聞くとそれは書生<span>と</span><br>いう人間中で一番獰悪どうあくな種族であったそうだ。</div>
<h3 style="margin:20px 0 8px 15%;">サンプル(2)</h3>
<span id="target01"></span>
<div class="textbox">ダミーテキスト:吾輩は猫である。名前はまだ無い。どこで生<span>れ</span><br>たかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした<span>所</span><br>でニャーニャー泣いていた事だけは記憶している。吾輩はここ<span>で</span><br>始めて人間というものを見た。しかもあとで聞くとそれは書生<span>と</span><br>いう人間中で一番獰悪どうあくな種族であったそうだ。</div>
<a class="button" href="#target01">brタグを無効にする</a>
CSSソース
div.textbox,div.textbox2 {
box-sizing:border-box;
width: 100%;
max-width: 610px;
margin: 0 auto;
border: 1px solid #cdcdcd;
padding:10px 15px;
text-align: left;
font-size: 19px;
line-height: 1.5;
color: #777;
background: #e0ffff;
}
div.textbox span,div.textbox2 span {
color: red;
}
@media (max-width: 745px){
div.textbox2 br {
display: none;
}
div.textbox2 span {
color: #19f;
}
}
#target01: target ~ div br {
display: none;
}
#target01: target ~ div span {
color: #19f;
}