2024.08.17

HTML・CSS

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

transformプロパティで複数指定する場合は、指定の順番に注意が必要です。
デモページはこちら

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

<p>transform指定なし → translate → rotate → scale</p>
<button class="button-parent"><span class="button-child">もっと見る</span></button>
<button class="button-parent"><span class="button-child style01">もっと見る</span></button>
<button class="button-parent"><span class="button-child style02">もっと見る</span></button>
<button class="button-parent"><span class="button-child style03">もっと見る</span></button>

<p>transform指定なし → translate → scale → rotate</p>
<button class="button-parent"><span class="button-child">もっと見る</span></button>
<button class="button-parent"><span class="button-child style01">もっと見る</span></button>
<button class="button-parent"><span class="button-child style04">もっと見る</span></button>
<button class="button-parent"><span class="button-child style05">もっと見る</span></button>

CSSでボタンの矢印を再現します。疑似要素のborder-topとborder-rightをtransformで移動・回転・縮小します。変化がわかりやすいように1つずつ順番に指定していきます。

.button-parent {
  font-size: 1.8rem;
  color: #fff;
  display: block;
  width: 100%;
  max-width: 200px;
  margin: 0 auto 1em;
  padding: 10px 20px;
  background: #62aac8;
  text-align: center;
  border: unset;
  appearance: none;
  cursor: pointer;
}

.button-child {
  position: relative;
  padding-right: 20px;
}

.button-child::before {
  content: '';
  position: absolute;
  top: 50%;
  right: 0;
  display: inline-block;
  width: 10px;
  height: 10px;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
}

.style01::before {
  transform: translateY(-50%);
}

.style02::before {
  transform: translateY(-50%) rotate(45deg);
}

.style03::before {
  transform: translateY(-50%) rotate(45deg) scaleY(0.6);
}

.style04::before {
  transform: translateY(-50%) scaleY(0.6);
}

.style05::before {
  transform: translateY(-50%) scaleY(0.6) rotate(45deg);
}

transformプロパティをtranslate → rotate → scaleの順番に指定していくと矢印が崩れるのがわかります。translate → scale → rotateの順番に指定すると意図した矢印になります。

関連記事

2021.08.26

HTML・CSS

svgをCSSのbackground-imageに指定

svgをCSSのbackground-imageに指定します。IE11への対応で書き方が変わりますが、今回はIE11にも対応させます。svgのコードは以下の通り…

2020.07.05

HTML・CSS

rubyタグでテキストにルビ(ふりがな)を振る

rubyタグとrtタグの二つを使ってテキストにルビ(ふりがな)を振ります。rtタグはふりがな、rubyタグはテキストとふりがな(rtタグを含む)の両方を囲います…

2021.10.04

HTML・CSS

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

デモページはこちら 複数行のテキストの左側を縦のボーダーで装飾します。CSSはborder-leftの場合とheightを設定した疑似要素beforeをabso…

2024.09.02

HTML・CSS

box-shadowとfilter: drop-shadowの違い

box-shadowプロパティとfilterプロパティのdrop-shadowを比較して違いを確認します。デモページはこちら filter: drop-shad…

2020.08.19

HTML・CSS

iOS Safariのツールバーと表示エリアの挙動

iOS Safariで表示される画面下部のツールバーは、下にスクロールすると非表示になります。正確には上部のアドレスバーが小さくなり、下部のツールバーが消えます…

上に戻る