CSS Web制作

CSSで要素を上下左右反転させる方法【背景画像だけ反転も解説】

2023年3月24日

※ 当サイトではアフィリエイト広告を利用しています

画像を反転させるにはどうしたらいいの?

スライダーで矢印を画像にした場合、左と右の画像2つ用意する必要がありますが、片方だけ用意してあとは反転させれば使う画像は1つで済みます。

またテキストが書いてある背景画像を反転させる場合、テキストも反転してしまう可能性があるので、背景画像だけ反転させる方法も解説します。

他にも画像や要素を反転させたいケースはあると思うので、今回はサンプルを使って解説していきます。

 

完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 完全無料
  • 30日間でWeb制作を学べる
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 毎日人数制限ありの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

CSSで要素を上下左右に反転させる方法

今回は4種類の反転方法を解説します。

  • 左右反転
  • 上下反転
  • 上下左右反転
  • 背景画像を反転(テキストはそのまま)

今回はtransform: scale();を中心に使っていきますが、transform: rotate();を使う方法もあります。

ただしtransform: rotate();は反転より回転で使いますし、transform: scale();の方がぱっと見て反転させてると分かるので、反転させるならtransform: scale();の方が個人的にはいいかと思います。

transform: rotate();については以下の記事を参照下さい。

あわせて読みたい
CSSで画像や文字など要素を回転させる方法【アニメーションも解説】
CSSで画像や文字など要素を回転させる方法【アニメーションも解説】

続きを見る

また今回使う画像はこちらになります。

HTMLはシンプルにimgタグだけにします。

<img src="画像パス" alt="" />

CSSは幅と高さだけ書きますが、解説では省略します。

img {
  height: auto;
  width: 200px;
}

そして今回のポイントとなるtransform: scale();は以下になります。

transform: scale(X方向の縮尺比率, Y方向の縮尺比率);

なので通常の状態だとtransform: scale(1, 1);になります。

 

要素を左右反転させる方法

左右反転させるCSSはこちらです。

img {
  transform: scale(-1, 1);
}

縮尺比率は変わらないのでサイズはそのままですが、X方向(横方向)をマイナスにすることで、左右反転させています。

See the Pen
上下左右反転:左右反転
by junpei (@junpei-sugiyama)
on CodePen.

 

transform: scaleX(-1);

変更するのはX方向だけなので、以下でも同じです。

img {
  transform: scaleX(-1);
}

 

transform: rotateY(180deg);

transform: rotateY(180deg);でも同じです。

img {
  transform: rotateY(180deg);
}

こっちはX方向ではなくY軸での回転なので、Yで合っています。

 

要素を上下反転させる方法

上下反転させるCSSはこちらです。

img {
  transform: scale(1, -1);
}

今度はY方向(縦方向)をマイナスにすることで、上下反転させています。

See the Pen
上下左右反転:上下反転
by junpei (@junpei-sugiyama)
on CodePen.

 

transform: scaleY(-1);

また変更するのはY方向だけなので、以下でも同じです。

img {
  transform: scaleY(-1);
}

 

transform: rotateX(180deg);

transform: rotateX(180deg);でも同じです。

img {
  transform: rotateX(180deg);
}

こっちはY方向ではなくX軸での回転なので、Xで合っています。

 

要素を上下左右反転させる方法

ここまでくれば予想できると思いますが、上下左右反転させるCSSはこちらです。

img {
  transform: scale(-1, -1);
}

今度はX方向・Y方向をマイナスにすることで、上下反転させています。

See the Pen
上下左右反転:上下左右反転
by junpei (@junpei-sugiyama)
on CodePen.

 

transform: scaleX(-1) scaleY(-1);

一応こういう書き方もできます。

img {
  transform: scaleX(-1) scaleY(-1);
}

 

transform: rotate(180deg);

transform: rotate(180deg);でも同じです。

img {
  transform: rotate(180deg);
}

これは時計の針のように半周回転するイメージです。

 

テキストが書いてある背景画像を反転させる方法

今度は画像の上にテキストが書いてある背景画像を反転させます。

こちらが反転前の状態です。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

コードはこちらです。

<div class="bg">
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
</div>
.bg {
  align-items: center;
  background-image: url("画像パス");
  background-repeat: no-repeat;
  background-size: cover;
  display: flex;
  height: 66vw;
  position: relative;
  width: 100%;
}
.bg::before {
  background: rgba(0, 0, 0, .5); /* マスクの色(黒の50%) */
  bottom: 0;
  content: "";
  height: auto;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  width: 100%;
}
p {
  color: #fff;
  font-size: clamp(16px, 5vw, 50px);
  line-height: 1.5;
  position: relative;
  width: 70%;
}

いろいろ書いてありますが、とりあえず背景画像のチワワが右側にいることだけ覚えておいて下さい。

そしてこちらのコードを追記します。

.bg {
  transform: scale(-1, 1);
}

すると背景画像だけでなく、テキストも反転してしまいます。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

これは背景画像のある.bgの子要素も全て反転しているからで、これを修正するにはその子要素であるpタグだけさらに反転させれば一周して戻ります。

.bg {
  transform: scale(-1, 1);
}
p {
  transform: scale(-1, 1); /* 背景画像と同じコードを書いて相殺 */
}

See the Pen
上下左右反転:背景画像(背景画像だけ反転)
by junpei (@junpei-sugiyama)
on CodePen.

ただしテキストの位置は右になってしまっているので、今回の場合は以下のコードを追記して左寄せにします。

.bg {
  justify-content: flex-end;
}

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

まとめ

今回は要素を上下左右反転させる方法と、背景画像だけ反転させる方法を解説してきました。

背景画像だけ反転させる場合は、その上に書いてあるテキストの位置なども注意しましょう。

以上になります。

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-CSS, Web制作