hoverで丸形の背景を表示させる方法【HTMLとCSS】

20-04-15 20-11-08

どうも。黒蛇です。

今回はhoverのときに丸形の背景を表示させる方法をご紹介します。

こちらです↓

解説もしているので、よろしければ参考にしてください。

ソースコード

ソースコードはこちらになります。

<div class="parent_div">
  <a href="#" class="sample_text">hoverのとき丸形の背景が浮かび上がります。</a>
  <span class="circle"></span>
</div>
  .parent_div {
    position: relative;
    display: inline-block;
  }
  .sample_text {
    color: #acacac;
    position: relative;
    z-index: 10;
    text-decoration: none;
  }
  .circle {
    display: inline-block;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background-color: #ffffff00;
    position: absolute;
    right: 50%;
    top: 50%;
    transform: translate(50%, -50%);
    z-index: 0;
    transition: .3s;
  }
  .sample_text:hover + .circle {
    background-color: #fff57d;
  }

解説

丸い背景を作る

まずは背景に表示させる丸い背景を作ります。

丸い背景部分のCSSはこのようになります。

  .circle {
    display: inline-block;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background-color: #fff57d;
  }

display; inline-block; にすることで高さと幅を指定できるようになります。ここでは50pxにしてみました。そしてborder-radius: 50%; にすることで要素を円形にしています。塗りつぶしの色は#fff57dにしました。

丸い背景を中央に配置する

次に丸い背景を中央に配置します。
以下のCSSを追加することで中央に配置することができます。

  .parent_div {
    position: relative;
    display: inline-block;
  }

  .circle {
    position: absolute;
    right: 50%;
    top: 50%;
    transform: translate(50%, -50%);
  }

丸い背景を絶対位置で指定するので、まずは親要素のdivに position: relative; を指定します。また、親要素のdivはblock要素なので今のままでは画面いっぱいに広がってしまいます。そこで display: inline-block; を指定して幅と高さをテキストと一致させるようにします。

そして子要素である丸背景部分に position: absolute; を指定し、right: 50%; 、top: 50%; にして中央に寄せます。また、このままでは若干中央からずれてしまうので、transform: translate(50%, -50%); で微調整します。

ここまででこのようになります。

丸い背景をテキストの後ろ側に配置する

このままではテキストの前に背景が来てしまっているので、背景をテキストの後ろに配置します。そのためのCSSは以下のようになります。

  .sample_text {
    position: relative;
    z-index: 10;
  }

  .circle {
    z-index: 0;
  }

テキストと背景は z-index で調節します。テキスト部分は背景部分と同様に親要素のdivを基準として z-index を指定したいので position: relative; を指定します。

これで背景をテキストの後ろ側に表示することができました。

hoverのときに丸い背景が表示されるようにする

あとはhoverしたときの処理を書けば完成です。

hover のときのCSSは以下です。

  .circle {
    transition: .3s;
    background-color: #ffffff00;
  }

  .sample_text:hover + .circle {
    background-color: #fff57d;
  }

背景がフワッと表視されるようにするため transition: .3s; を指定しました。また、hover する前は背景を隠しておきたいので background-color: #ffffff00; に変更して、hover したときに改めて background-color: #fff57d; を指定しました。

.sample:hover + .circle の部分についてですが、これは 「.sample が hover した場合の、すぐ下にいるの兄弟要素の .circle 」という意味です。「+」を使うと隣り合っている直後の要素を指定することができます。

これで、hover したときに丸形の背景が表示されるようになりました。見た目の問題で、リンク部分に以下のCSSを加えて見やすくしました。

  .sample_text {
    text-decoration: none;
    color: #acacac;
  }

完成です。
もう一度完成したものを載せています↓

まとめ

今回はhoverのときに丸形の背景を表示させる方法についてご紹介しました。ご参考になれば幸いです。

では、また。