コニファ・ロゴ

ツール集:CSS モバイル表示などでレイアウトに悪影響を与えるbrタグを削除するテスト

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;
	}

 

 

戻るボタン