CSS Web制作

【CSS】ボタン内の矢印の作り方とhoverで色の反転やアニメーションさせる方法

2024年2月12日

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

ボタン内の矢印ってどうやって作るの?

コーディングではボタンを作ることが多いですが、ボタン内に矢印があるケースも多いと思います。

そこで今回は、

  • 通常の矢印
  • 三角形の矢印
  • 画像の矢印

以上の3つと、それに対して、

  • hoverしたら色を反転
  • hoverしたら矢印を移動

という実装をご紹介していきます。

つまり、全部で9種類ご紹介していきます。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

ボタン内の矢印の作り方(9種類共通のコード)

まずは、9種類共通となるHTMLとCSSを解説します。

ちなみにHTMLは全て同じなので、この後の解説ではHTMLと共通のCSSは省略します。

 

HTMLのコード

<div class="btn">
  <a href="#">ボタン</a>
</div>

 

CSSのコード

/* ボタンの共通CSS */
.btn {
  margin-top: 30px;
  text-align: center;
}
.btn a {
  background-color: #2d96ff;
  border: 1px solid #2d96ff;
  border-radius: 50px;
  color: #fff;
  display: inline-block;
  font-size: 20px;
  padding: 20px;
  position: relative;
  text-decoration: none;
  width: 380px;
}

margin-topなどはデモで見やすくするためだけなので、実際に使うときは他も含めて適宜調整して下さい。

 

デモ

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

これをベースに、矢印を追加していきます。

 

ボタン内の矢印の作り方(通常の矢印)

まずは通常の矢印です。

通常の矢印とは、線が2本の『>』という矢印です。

これ以降は、共通のCSSに追記するCSSだけを書いていきます。

 

CSSのコード

/* 通常の矢印 */
.btn a::before {
  border-right: 3px solid #fff;
  border-top: 3px solid #fff;
  bottom: 0;
  content: "";
  height: 10px;
  margin: auto;
  position: absolute;
  right: 40px;
  top: 0;
  transform: rotate(45deg);
  width: 10px;
}

 

デモ

See the Pen
ボタン
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印の作り方(三角形の矢印)

次は三角形の矢印を作ります。

 

CSSのコード

/* 三角形の矢印(clip-path) */
.btn a::before {
  background-color: #fff;
  bottom: 0;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  content: "";
  height: 20px;
  margin: auto;
  position: absolute;
  right: 35px;
  top: 0;
  width: 15px;
}

これはclip-pathを使った方法ですが、borderを使う方法もあります。

/* 三角形の矢印(border) */
.btn a::before {
  border-bottom: 10px solid transparent;
  border-left: 15px solid #fff;
  border-top: 10px solid transparent;
  bottom: 0;
  content: "";
  height: 0;
  margin: auto;
  position: absolute;
  right: 35px;
  top: 0;
}

三角形の作り方は、以下の記事を参照下さい。

あわせて読みたい
【サンプル付き】CSSで三角形を作る2つの方法(border、clip-path使用)
CSSで三角形を作る2つの方法(clip-path、border使用)

続きを見る

 

デモ

See the Pen
ボタン(通常の矢印)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印の作り方(画像の矢印)

次は画像の矢印を使います。

画像なので、矢印じゃなくてアイコンでも使えます。

 

CSSのコード

/* 画像が矢印 */
.btn a::before {
  background-image: url(画像パス);
  background-repeat: no-repeat;
  background-size: contain;
  bottom: 0;
  content: "";
  height: 25px;
  margin: auto;
  position: absolute;
  right: 30px;
  top: 0;
  width: 25px;
}

 

デモ

See the Pen
ボタン(三角形の矢印)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印をhoverしたら色を反転(通常の矢印)

次は、ボタンにカーソルを乗せたら、ボタンと矢印の色を反転させます。

 

CSSのコード

/* 通常の矢印(hoverで反転) */
.btn a {
  transition: all .5s;
}
.btn a::before {
  border-right: 3px solid #fff;
  border-top: 3px solid #fff;
  bottom: 0;
  content: "";
  height: 10px;
  margin: auto;
  position: absolute;
  right: 40px;
  top: 0;
  transform: rotate(45deg);
  transition: all .5s;
  width: 10px;
}
.btn a:hover {
  background-color: #fff;
  color: #2d96ff;
}
.btn a:hover::before {
  border-right: 3px solid #2d96ff;
  border-top: 3px solid #2d96ff;
}

ポイントは、transitionでじんわり変化させるところです。

あとは、hoverした後のbackground-color(背景色)・border(線)・color(フォントカラー)の色を指定します。

 

デモ

See the Pen
ボタン(通常の矢印)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印をhoverしたら色を反転(三角形の矢印)

これは、先ほどの通常の矢印と考え方は同じです。

 

CSSのコード

/* 矢印が三角(hoverで反転) */
.btn a {
  transition: all .5s;
}
.btn a::before {
  background-color: #fff;
  bottom: 0;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  content: "";
  height: 20px;
  margin: auto;
  position: absolute;
  right: 35px;
  top: 0;
  transition: all .5s;
  width: 15px;
}
.btn a:hover {
  background-color: #fff;
  color: #2d96ff;
}
.btn a:hover::before {
  background-color: #2d96ff;
}

 

デモ

See the Pen
ボタン(三角形の矢印)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印をhoverしたら色を反転(画像の矢印)

これは画像なので、先ほどまでとはちょっとやり方が違います。

この場合は、反転前の画像と反転後の画像を用意します。

今回は、白い画像がhover前、青い画像がhover後になります。

そしてこれを瞬間的に入れ替えるなら、display: none;display: block;でもいいですが、じんわり変化させたいと思います。

それには、hover後の画像の上に、hover前の画像をピッタリ重ねます。

そしてopacityを使ってじんわり透過 or 出現させて入れ替えます。

 

CSSのコード

/* 矢印が画像(hoverで反転:画像2枚必要) */
.btn a {
  transition: color .5s, background-color .5s;
}
.btn a::before,
.btn a::after {
  background-repeat: no-repeat;
  background-size: contain;
  bottom: 0;
  content: "";
  height: 25px;
  margin: auto;
  position: absolute;
  right: 30px;
  top: 0;
  transition: opacity .5s;
  width: 25px;
}
.btn a::before {
  background-image: url(hover前の画像パス);
}
.btn a::after {
  background-image: url(hover後の画像パス);
  opacity: 0;
}
.btn a:hover {
  background-color: #fff;
  color: #2d96ff;
}
.btn a:hover::before {
  opacity: 0;
}
.btn a:hover::after {
  opacity: 1;
}

 

デモ

See the Pen
ボタン(画像の矢印)
by junpei (@junpei-sugiyama)
on CodePen.

ちなみに、アイコンなどの画像を色を変えてダウンロードするには、『icooon-mono』というサイトが便利です。

あわせて読みたい
フリーアイコン素材サイト icooon-monoの使い方
【商用利用可】フリーアイコン素材サイト『icooon-mono』の使い方【色変更なども解説】

続きを見る

 

ボタン内の矢印をhoverしたら矢印を移動(通常の矢印)

次は、ボタンにカーソルを乗せたら矢印を右に少し動かして、外したら矢印が戻るようにします。

 

CSSのコード

/* 通常の矢印(hoverで矢印移動) */
.btn a::before {
  border-right: 3px solid #fff;
  border-top: 3px solid #fff;
  bottom: 0;
  content: "";
  height: 10px;
  margin: auto;
  position: absolute;
  right: 40px;
  top: 0;
  transform: rotate(45deg);
  transition: right .5s;
  width: 10px;
}
.btn a:hover::before {
  right: 35px;
}

右に動かすのはright: 35px;ですね。

元はright: 40px;なので、5px右に移動します。

あとはtransition: right .5s;でアニメーションを付けています。

 

デモ

See the Pen
ボタン(通常の矢印:hoverで色を反転)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印をhoverしたら矢印を移動(三角形の矢印)

これは、先ほどの通常の矢印と考え方は同じです。

 

CSSのコード

/* 矢印が画像(hoverで矢印移動) */
.btn a::before {
  background-color: #fff;
  bottom: 0;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  content: "";
  height: 20px;
  margin: auto;
  position: absolute;
  right: 35px;
  top: 0;
  transition: right .5s;
  width: 15px;
}
.btn a:hover::before {
  right: 30px;
}

 

デモ

See the Pen
ボタン(三角形の矢印:hoverで色を反転)
by junpei (@junpei-sugiyama)
on CodePen.

 

ボタン内の矢印をhoverしたら矢印を移動(画像の矢印)

これは反転と違い、ただ移動するだけなので簡単です。

 

CSSのコード

/* 矢印が画像(hoverで矢印移動) */
.btn a::before {
  background-image: url(画像パス);
  background-repeat: no-repeat;
  background-size: contain;
  bottom: 0;
  content: "";
  height: 25px;
  margin: auto;
  position: absolute;
  right: 30px;
  top: 0;
  transition: right .5s;
  width: 25px;
}
.btn a:hover::before {
  right: 25px;
}

 

デモ

See the Pen
ボタン(画像の矢印:hoverで色を反転)
by junpei (@junpei-sugiyama)
on CodePen.

まとめ

今回は、ボタン内の矢印に関する内容でした。

hoverのアニメーションも全てCSSのみなので簡単なものですが、こういったちょっとしたアニメーションが実務でもよく使われるので、ブクマしていつでもコピペできるようにしておくと便利かと思います。

以上になります。

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

 

  • この記事を書いた人

じゅんぺい

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

-CSS, Web制作