2021.10.04

HTML・CSS

複数行のテキストの左側を縦のボーダーで装飾

デモページはこちら

複数行のテキストの左側を縦のボーダーで装飾します。CSSはborder-leftの場合とheightを設定した疑似要素beforeをabsoluteで配置する場合で検証します。

htmlの構造は以下の通りです。

<p class="title">border-leftの場合</p>
<p class="text01">abcdefghi<br>jklmnopqr<br>stuvwxyz</p>

<p class="title">heightを設定した疑似要素beforeをabsoluteで配置する場合</p>
<p class="text02">abcdefghi<br>jklmnopqr<br>stuvwxyz</p>

まずborder-leftの場合です。

.text01 {
	font-size: 5rem;
	font-weight: 700;
	line-height: 1.4;
	padding-left: 24px;
	border-left: 6px solid #000;
}

border-leftは高さが設定できないため、ボックスの高さいっぱいまでボーダーで装飾されます。そのためテキストのline-heightが大きければその分ボーダーも高くなります。

次にheightを設定した疑似要素beforeをabsoluteで配置します。

.text02 {
	font-size: 5rem;
	font-weight: 700;
	line-height: 1.4;
	padding-left: 30px;
	position: relative;
}
.text02:before {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	display: block;
	width: 6px;
	height: calc(100% - .7em);
	background-color: #000;
	transform: translateY(-50%);
}

疑似要素はdisplay: block;にすれば高さが設定できます。height: calc(100% - .7em);でボックスの高さよりも0.7em分短くしています。縦方向を中央寄せで配置すればバランス良くボーダーで装飾できます。

関連記事

2020.10.16

HTML・CSS

flexboxでCSSのwidthプロパティにcalcを利用

769px以上:4カラム・768px以下:3カラム flexboxでCSSのwidthプロパティにcalcを利用します。以下のhtml構造でテストします。デモペ…

2024.08.16

HTML・CSS

flex-shrinkで文字の改行を防ぐ

flexボックスのレイアウトで、flexアイテムにflex-shrinkプロパティを指定してテキストが改行されるのを防ぎます。デモページはこちら 以下のhtml…

2020.06.27

HTML・CSS

iOSのブラウザでセレクトボックスの文字を省略せずに表示

iOSのブラウザではセレクトボックスに長いテキストの選択肢がある場合、途中で省略して表示されます。省略記号「…」が付いて選択肢が最後まで読めません。これを全て表…

2021.07.06

HTML・CSS

background-imageプロパティを利用した高さ可変の三角形

borderプロパティで三角形を作成した場合、高さを可変にすることができません。そこで、background-imageプロパティのlinear-gradien…

2021.07.04

HTML・CSS

background-positionプロパティを利用した背景画像の右寄せ

background-positionプロパティを利用して背景画像を右寄せします。Y軸方向の位置は中央寄せにします。単純な右寄せであればbackground-p…

上に戻る