速報

AWS Virtual Engineering Workbenchのテンプレート注入を修正|公開用Lambdaの再配備を確認

CATEGORY

【CSS】マウスオーバーで上下に重なる要素が入れ替わるアニメーション

※本ページのリンクにはプロモーションが含まれています。

【CSS】マウスオーバーで上下に重なる要素が入れ替わるアニメーション

目次

CSSで、マウスオーバーした際に上下に重なる要素が入れ替わるアニメーションのご紹介です。

予め二つの要素を重ねた状態で設置しておき、マウスオーバー時に上と下の要素が入れ替わるアニメーションとなります。文字だけでは伝わりにくいかと思いますので、簡単なデモを用意しました。下記のデモにて表示されている「FRONT」と記載された要素にマウスカーソルを乗せてみてください。

See the Pen EzzvEG by ryoy (@intotheprogram) on CodePen.

「FRONT」と記載された要素が下(裏)側に移動して「BACK」と記載された要素が上(表)側に表示されたかと思います。これが上下に重なる要素が入れ替わるアニメーションになります。

本記事では、上記アニメーションの実装方法をご紹介していきたいと思います。

では、解説していきます。

スポンサーリンク

HTMLで上下に重なる要素を作成する

HTMLで上下に重なる要素を作成します。

本記事では「box」という要素の配下に「front」と「back」という形で二つの要素を持たせています。命名は十人十色ですので、ご自分の好きな名前で記述していただければと思います。

HTML

<a class="box" href="#">
  <span class="back">BACK</span>
  <span class="front">FRONT</span>
</a>

「box」の配下に「front」と「back」を作成しました。以上でHTMLの準備は完了です。

続いて作成したHTMLにCSSでスタイルを定義していきます。

通常時とマウスオーバーした際のスタイルを定義する

HTMLで作成した要素にCSSでスタイルを付けていきます。スタイルを付ける際に下記の点に気を付けていただければと思います。

  • 通常時とhover時の「z-index」は適切に設定する
  • 「FRONT」と「BACK」の要素には背景を付ける

各要素の「z-index」と背景が設定されていない場合に要素が入れ替わらないことがありますのでご注意ください。

下記にCSSのサンプルを用意しましたので、参考にしてスタイルを定義していただければと思います。

CSS

/* 「box」スタイル */
.box {
  position: relative;
  display: block;
  width: 300px;
  height: 100px;
  margin: 40px auto 0;
}

/* 「FRONT」、「BACK」の共通スタイル */
.box span {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 290px;
  height: 90px;
  line-height: 90px;
  text-align: center;
  transition: .3s;
}

/* 「BACK」スタイル */
.box .back {
  background: #007db9;
  z-index: 1;
}

/* 「FRONT」スタイル */
.box .front {
  color: #fff;
  background: #2f3640;
  transform: translate3d(10px, 10px, 0);
  z-index: 2;
}

/* 「BACK」スタイル(hover) */
.box:hover .back {
  transform: translate3d(10px, 10px, 0);
  z-index: 2;
}

/* 「FRONT」スタイル(hover) */
.box:hover .front {
  transform: translate3d(0, 0, 0);
  z-index: 1;
}

本記事でご紹介したHTMLにCSSでスタイルを定義すると下記デモのアニメーション完成です。(冒頭でご紹介したデモと同じものです。)

DEMO

See the Pen EzzvEG by ryoy (@intotheprogram) on CodePen.

補足としまして、要素の縦・横の位置はtransformで設定していますが、positionを使ってtop、leftで設定していただいても問題ありませんので、使いやすい方で実装ください。私個人としましては、transformの方が動きが滑らかなのでおすすめです。

スポンサーリンク

最後に

いかがでしたでしょうか。

本記事ではボタンに似た要素を使用して上下に重なる要素を入れ替えるアニメーションをご紹介しましたが、パネルであったりバナーであったり、見せ方によって視覚的な効果が大きく変わってくるかと思いますので、カスタマイズしてお好みのアニメーションにしていただければ幸いです。

以上、CSSでマウスオーバーした際に上下に重なる要素が入れ替わるアニメーションのご紹介でした。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク