<p class="…"> 縦書き文字の配置について | BLOG|ホームページ制作 Brick Plan【ブリックプラン】

2024.08.19

HTML・CSS

縦書き文字の配置について

縦書きの文字を写真の左上・左中・左下・右上・右中・右下に配置します。
デモページはこちら

以下のhtml構造で確認します。

<p>テキスト左上</p>
<div class="div-parent">
  <p class="text style01">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

<p>テキスト左中</p>
<div class="div-parent">
  <p class="text style02">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

<p>テキスト左下</p>
<div class="div-parent">
  <p class="text style03">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

<p>テキスト右上</p>
<div class="div-parent">
  <p class="text style04">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

<p>テキスト右中</p>
<div class="div-parent">
  <p class="text style05">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

<p>テキスト右下</p>
<div class="div-parent">
  <p class="text style06">Flower garden</p>
  <figure class="figure"><img src="./img/flower.jpg" alt="" class="image"></figure>
</div>

CSSはpositionとtransformの組み合わせでテキストを配置します。下寄せの場合はtransform-origin: right bottomにするのがポイントです。

.div-parent {
  position: relative;
  width: 100%;
  max-width: 400px;
  margin: 0 auto 1em;
}

.text {
  font: normal 400 24px / normal "Oooh Baby", cursive;
  letter-spacing: 0.1em;
  white-space: nowrap;
  position: absolute;
}

//テキスト左上
.style01 {
  top: 0;
  left: 0;
  transform-origin: top left;
  transform: rotate(90deg);
  padding-top: 5px;
}

//テキスト左中
.style02 {
  top: 50%;
  left: 0;
  transform-origin: top left;
  transform: rotate(90deg) translateX(-50%);
  padding-top: 5px;
}

//テキスト左下
.style03 {
  bottom: 0;
  right: 100%;
  transform-origin: right bottom;
  transform: rotate(90deg) translateY(100%);
  padding-top: 5px;
}

//テキスト右上
.style04 {
  top: 0;
  left: 100%;
  transform-origin: top left;
  transform: rotate(90deg) translateY(-100%);
  padding-bottom: 5px;
}

//テキスト右中
.style05 {
  top: 50%;
  left: 100%;
  transform-origin: top left;
  transform: rotate(90deg) translate(-50%, -100%);
  padding-top: 5px;
  padding-bottom: 5px;
}

//テキスト右下
.style06 {
  bottom: 0;
  right: 0;
  transform-origin: right bottom;
  transform: rotate(90deg);
  padding-bottom: 5px;
}

transformを複数指定する場合、指定した順番に変形していきます。translateとrotateの順番を逆にすると意図した場所に配置できなくなるため、注意が必要です。

関連記事

2024.09.13

HTML・CSS

疑似クラス:has()を利用した余白と色の調整

疑似クラスの:has()を利用して、liタグの余白と色を調整をします。デモページはこちら 共通のCSSは以下になります。通常時はulタグにgap: 60pxを指…

2024.08.17

HTML・CSS

transform複数指定時の順番について

transformプロパティで複数指定する場合は、指定の順番に注意が必要です。デモページはこちら 以下のhtml構造で確認します。 CSSでボタンの矢印を再現し…

2024.09.21

HTML・CSS

mask-imageを利用したSVGの画像切り抜き

CSSのmask-imageプロパティを利用して、SVGで画像を切り抜きます。デモページはこちら まず、以下をmask.svgとして保存します。 共通のCSSは…

2024.08.15

HTML・CSS

box-decoration-breakでテキストの背景色を設定

box-decoration-breakプロパティでテキストに背景色を設定します。複数行の文字に対応でき、改行も問題ありません。デモページはこちら 以下のhtm…

2020.10.12

HTML・CSS

CSSプロパティをショートハンドで記述

CSSプロパティをショートハンドで記述します。プロパティによって記述順や省略可・不可のルールがあります。 ■ fontプロパティfont-style・font-…

上に戻る