見出し画像

【web】アイコン付きリンクボタンの作り方

こんにちは、つちだ にんじんです。
今回は、よく見かけるアイコン付きのリンクボタンの作り方を書きます。
初心者向けにしっかり説明できたらと思います(自分も初心者)

こういうボタンです↑
色々なところでよく見かけ、汎用性の高いボタンです。

ちなみにこのボタンは、

<!---HTML-->
<a href="URL">
    <div class="text">問合せはこちら</div>
    <div class="icon"></div>
</a>
/*CSS*/
a{
  text-decoration: none;
  background: #ffcc00;
  display: block;
  width: fit-content;
  color: #333300;
  font-weight: bold;
  padding: 10px 50px;
  border-radius: 100vh;
  display: flex;
  align-items: center;
}
.icon{
  border-bottom: 2px solid #333300;
  border-right: 2px solid #333300;
  width: 10px; 
  height: 10px;
  transform: rotate(-45deg);
}
.text{
  padding-right: 20px;
}

こんな風に作られています。
マウスオーバーで変化をつけたらバッチリ使えそうです。
では作り方の解説をします。

作り方

HTML

作り方って書くと3分クッキングみたいですね。
美味しいリンクボタンを作っていきましょう。

HTMLですが、aタグの中に「divで括ったテキスト」と、「divで括ったアイコン」が入っている状態にします。

<a href="URL">
    <div class="text">問合せはこちら</div>
    <div class="icon"></div>
</a>

理由は、このdiv要素をcssのflexで横並びにするからです。
div class="icon"の中身はcssで矢印を作るので、中身は空でOKです。
アイコンの部分を画像にしたい場合などは、この中に画像を入れるといいです。

<a href="URL">
    <div class="text">問合せはこちら</div>
    <div class="icon">
             <img src="画像URL">
        </div>
</a>

画像にする場合はこんな感じです。

これでHTMLはOKです。
クッキングの下準備完了ですね。

CSS

ここららはcssで調理、味付けしていきます。

まずはわかりやすいようにaタグの背景に色をつけたり、テキストを太字にしたり簡単な装飾をします。

/*css*/
a{
  text-decoration: none;     /*デフォルトの装飾を無効化*/
  background: #ffcc00;     /*背景色*/
  display: block;     /*ブロック要素に変換*/
  width: fit-content;     /*横幅をコンテンツに合わせる*/
  color: #333300;     /*テキストの色*/
  font-weight: bold;     /*テキストを太字*/
}

見た目はこんな感じです↓

次に、div class="icon"の中にアイコンを作っていきます。

/*css*/
.icon{
  border-bottom: 2px solid #333300;
  border-right: 2px solid #333300;
  width: 10px; 
  height: 10px;
  transform: rotate(-45deg);     /*向きを-45度傾ける*/
}
イメージはこんな感じです

widthとheightを指定することで10px × 10pxの箱ができ、その箱の底辺に線をつけるのがborder-bottom箱の右の辺に線をつけるのがborder-rightです。それを回転させています。
これで、ボタンはこんな感じになったと思います。↓

まだflexで横並びにしていないので、div要素がそのまま縦並びになっている状態です。
これを横並びにしていきます。

/*css*/
a{
  text-decoration: none;
  background: #ffcc00;
  display: block;
  width: fit-content;
  color: #333300;
  font-weight: bold;
  display: flex;     /*追加:横並びにする*/
  align-items: center;     /*追加:flex要素を上下中央揃え*/
}

display: flex;」と「align-items: center;」を書き足してこんな感じに↓

display: flex;」は要素を横並びにするものです。
align-items: center;」は横並びにした要素たちを、上下中央揃えにするものです。
ちなみに、align-itemsはflexにした要素でないと適応できません。

上下中央揃えの図

あとは、見た目の調整をします。
味付けってところでしょうか。

/*css*/
a{
  text-decoration: none;
  background: #ffcc00;
  display: block;
  width: fit-content;
  color: #333300;
  font-weight: bold;
  display: flex;
  align-items: center;
 padding: 10px 50px;     /*追加:ボタン全体の幅を調整*/
  border-radius: 100vh;     /*追加:ボタンの角を丸くした*/
}
 .text{
  padding-right: 20px;     /*追加:テキストとアイコンの余白調整*/
}

完成したのがこちらです↑
美味しそうにできましたね。

完成したcssを全部まとめるとこうなります↓

/*CSS*/
a{
  text-decoration: none;
  background: #ffcc00;
  display: block;
  width: fit-content;
  color: #333300;
  font-weight: bold;
  padding: 10px 50px;
  border-radius: 100vh;
  display: flex;
  align-items: center;
}
.icon{
  border-bottom: 2px solid #333300;
  border-right: 2px solid #333300;
  width: 10px; 
  height: 10px;
  transform: rotate(-45deg);
}
.text{
  padding-right: 20px;
}

マウスオーバー

余談として、マウスオーバーでの変化もつけておきます。
隠し味ってやつです。

/*css*/
a{
  text-decoration: none;
  background: #ffcc00;
  display: block;
  width: fit-content;
  color: #333300;
  font-weight: bold;
  padding: 10px 50px;
  border-radius: 100vh;
  display: flex;
  align-items: center;
  border: 2px solid #ffcc00;
  transition: .3s;     /*追加:マウスオーバー戻る時ゆっくりにする*/
}
.icon{
  border-bottom: 2px solid #333300;
  border-right: 2px solid #333300;
  width: 10px; 
  height: 10px;
  transform: rotate(-45deg);
  transition: .3s;     /*追加:マウスオーバー戻る時ゆっくりにする*/
}
 .text{
  padding-right: 20px;
}
/* -----ここから下 追加したところ----- */
a:hover{
  background: #fff;     /*マウスオーバーで背景を白*/
  transition: .2s;     /*徐々に変化をつける*/
}
a:hover .icon{
  transform: translateX(20px) rotate(-45deg);     /*マウスオーバー時右に移動*/
  transition: .2s;     /*徐々に変化をつける*/
}

これは隠し味なんで説明はしません(面倒)

以上、今週の3分クッキングでした。
また来週!


私のHPです。
webグラフィックデザインイラスト制作などのお仕事がありましたら、ぜひこちらからお気軽にお問合せください!

いいなと思ったら応援しよう!