【HTML・CSSのみ】hoverでふわっとグラデーションする2重ボーターボタンの実装方法!

久しぶりにコーディングをしている際の復習ページを書いてみます!

今回は、

hoverでふわっとグラデーションする2重ボーダーボタンの実装方法

をまとめていきます!

 

背景をグラデーションにした時にtransitionをかける方法

背景(back-ground)をグラデーション(background: linear-gradient ~)にした時にtransitionをかける方法をまとめていきます。

しかもボーダー2重のボタンに挑戦してみました!

↓サンプル↓
次に進む

 

<HTML>

<a class="nextBtn" href="#">
  <span>次に進む</span>
</a>

 

<CSS>

.nextBtn {  //aタグ
  color: #fff;
  font-family: "FOT-筑紫A丸ゴシック Std", sans-serif;
  font-weight: bold;
  line-height: 1;
  display: block;
  width: 348px;
  height: 70px;
  border-radius: 8px;
  background: -webkit-gradient(linear, right top, left top, from(#F4BED6), to(#F4D080));
  background: linear-gradient(to left, #F4BED6, #F4D080);
  position: relative;
  z-index: 0;
  -webkit-transition: .6s;
  transition: .6s;
  
}

.nextBtn::after {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: -1;
  left: 0;
  top: 0;
  -webkit-transition: 0.5s;
  transition: 0.5s;
  background: #DBDBDB;
  z-index: 10;
  border-radius: 8px;
}

.nextBtn span {
  color: #fff;
  font-size: 30px;
  text-align: center;
  display: block;
  width: 338px;
  height: 60px;
  margin: 5px auto;
  padding: 15px 10px 20px;
  border: solid 2px #fff;
  border-radius: 8px;
  position: relative;
  z-index: 40;  
  -webkit-transition: .6s;
  transition: .6s;
}

.nextBtn span::before {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  -webkit-transition: 0.5s;
  transition: 0.5s;
  background: -webkit-gradient(linear, right top, left top, from(#F4BED6), to(#F4D080));
  background: linear-gradient(to left, #F4BED6, #F4D080);
  z-index: -2;
  border-radius: 8px;
}

.nextBtn span::affter { 
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  -webkit-transition: 0.5s;
  transition: 0.5s;
  background: #DBDBDB; 
  z-index: -1;
  border-radius: 8px;
 }

.nextBtn:hover::after { 
  opacity: 0;
 }

.nextBtn:hover span::after {
  opacity: 0;
 }

長い…( ̄∇ ̄)
そしてちょっと雑…笑

ポイントを解説していきます!

 

【おすすめ】UdemyでともすたさんのWordPress講座を学んでみる!!

 

2重ボーダーを作る

本来、ボーダーを2重にする際、
border:double;
outlineなどを使用すると簡単に2重のボーダーを作ることができます!

【超簡単】もう悩まない!CSSのみで二重線をつける方法

 

今回は、ホバーした時に背景をグラデーションにしたいと思ったため、少し面倒な実装を行ってみました。

 

2重のボーダーにするため、aタグにspanを入れる!
aタグにはグレーの背景をつけ、spanにはボーダー付きの背景をつける!
spanはaタグより小さめのサイズにする!

 

画像で解説!

これで2重ボーダーが実装できました!!

 

ホバーで背景がふわっとグラデーションするボタン

やりたいこと

・ホバーをしたときにボタンの背景をグレーからグラデーションがかかった背景に変えたい!
→これだけだと、ホバーで背景色を変更にすればいいのですが…

・ホバー時はtransitionをかけて背景の色をふわっと変えたい!!
→ここが注目ポイントです!

 

ホバー時の背景色をグラデーションに指定しているとtransitionが効かないようです…( ̄∇ ̄)

 

ということで、擬似要素を使うことにしました。

・aタグはホバーした後のグラデーションの背景で実装
・aタグ、spanタグそれぞれに擬似要素afterで最初のグレー背景の四角を作り重ねておく
ホバーしたときに、afterを消すさらに!
・span内の文字が消えてしまうため、spanには擬似要素afterで最初の背景色グレー作る
・spanの擬似要素beforeでホバー後のグラデーションの背景を作る
・span(文字) > span::after(グレー背景) > span::before(グラデーション)の重なり順にする!

 

画像で解説!

いかがでしょうか?(*´∇`*)

今回は画像付きで解説してみました!

コーディングの復習がてらXDの使い方も学べて一石二鳥でした笑

 

おまけ

【おすすめ】UdemyでともすたさんのWordPress講座を学んでみる!!

https://px.a8.net/svt/ejp?a8mat=3NCUT5+C7DX82+3L4M+BW0YB&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F

 

Shopify構築を学んで、Web制作の単価を上げませんか?
リキマスでShopify構築を学ぶ!

Shopify初級講座

 

最後まで読んでいただきありがとうございました!

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です