Skip to content

ボタン装飾デザインサンプル

ボタン要素のデザインのサンプルです。class名、色やフォントまわりなどは適宜変更してください。
以下サンプルをもとに、いろいろいじってみるのもたのしいと思います。

ボタン要素には共通で以下のCSSをあてています。

css
.button {
  padding: 0.5em 0.75em;
  font-size: 1rem;
  font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  line-height: 1.4;
  background: none;
  border: none;
  border-radius: 0;
  outline: none;
  appearance: none;
  transition: all 0.3s;
  cursor: pointer;
}

サンプルではbuttonタグを利用していますが、リンク装飾の利用であればaタグでも利用可能です。

aタグの場合、共通のCSSは以下になります。aタグの場合、初期値のdisplay: inline;では装飾がうまくいかないため、display: inline-block;を指定します。サンプルではclass名をbuttonとしているため、linkに置き換えてください。

css
/* aタグを利用する場合 */
.link {
  padding: 0.5em 0.75em;
  font-size: 1rem;
  font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  transition: all 0.3s;
}

なお、サンプルでbutton要素にtype="button"を入れていますが、メールフォームなどの送信ボタンとして利用する場合はtype="submit"としてください。

ボタンサンプル1

いちばんシンプルなボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #fff;
  background-color: #454545;
}

.button:hover {
  background-color: #d5393e;
}

一番シンプルな基本の形です。:hoverでマウスオーバー時の挙動を指定します(以降のサンプルも同様)

ボタンサンプル2

角を丸くしてすこし柔らかい印象のボタン。

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #fff;
  background-color: #454545;
  border-radius: 5px;
}

.button:hover {
  background-color: #d5393e;
}

border-radiusで指定する角丸の数値によって印象が変わります。px以外にも%remなどの単位が利用できます。

ボタンサンプル3

左右を完全な半円にしたボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #fff;
  background-color: #454545;
  border-radius: 20px;
}

.button:hover {
  background-color: #d5393e;
}

border-radiusの値を短辺(ボタンの高さ)以上の数値にすると完全な半円になります。

ボタンサンプル4

シンプルな枠付きボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #d5393e;
  background-color: #fff;
  border: 1px solid #d5393e;
}

.button:hover {
  color: #fff;
  background-color: #d5393e;
}

サンプル1の枠線バージョンです。この状態で、角丸をつけたり線のスタイルを変更すると印象が変わります。

ボタンサンプル5

完全な正円のボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #d5393e;
  background-color: #fff;
  border: 1px solid #d5393e;
  border-radius: 50%;
  width: 150px;
  height: 150px;
}

.button:hover {
  color: #fff;
  background-color: #d5393e;
}

widthheightを同じ値にしてborder-radius: 50%;を指定すると、完全な正円をつくることができます。ただし長い文字のボタンには不向きなため、アイコンをボタンとして利用するなど、使い所を考えた方がよさそうです。

なお、aタグで利用する場合はこのままだと上方に文字がきてしまうので、line-heightで高さを調整する必要があります。

ボタンサンプル6

マウスオーバー時に「押した感じ」がするボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #d5393e;
  background-color: #fff;
  border: 1px solid #d5393e;
  position: relative;
}

.button::after {
  content: '';
  background-color: #d5393e;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 5px;
  right: -5px;
  display: inline-block;
  z-index: -1;
}

.button:hover {
  color: #fff;
  background-color: #d5393e;
  top: 5px;
  right: -5px;
}

.button:hover::after {
  display: none;
}

ボタンサンプル7

マウスオーバー時に「押した感じ」がするボタン2

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  color: #d5393e;
  background-color: #fff;
  border: 1px solid #d5393e;
  border-radius: 5px;
  box-shadow: 0 5px 0 #d5393e;
}

.button:hover {
  box-shadow: 0 3px 0 #d5393e;
  transform: translateY(2px);
}

マウスオーバー時にbox-shadowの影部分の太さを細くした差分(サンプルでは5px3pxで差分2px)をtranslateYでずらしています。

ボタンサンプル8

ステッチが入ったようなデザインボタン

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  padding-block: 1em;
  color: #454545;
  border: 2px solid #454545;
  border-radius: 10px;
  position: relative;
}

.button::before,
.button::after {
  content: '';
  width: 100%;
  height: 0;
  position: absolute;
  left: 0;
  display: inline-block;
}

.button::before {
  border-top: 1px dashed #454545;
  top: 0.5em;
}

.button::after {
  border-bottom: 1px dashed #454545;
  bottom: 0.5em;
}

.button:hover {
  color: #fff;
  background-color: #454545;
}

.button:hover::before,
.button:hover::after {
  border-color: #fff;
}

ステッチ部分の領域を確保するため、ボタンの上下余白をpadding-blockですこし広めに確保します。
線のスタイルや太さを変えるとすこし印象が変わります。

ボタンサンプル9

ステッチが入ったようなデザインボタン2

html
<button type="button" name="button" class="button">ボタンサンプル</button>
css
.button {
  padding: 1em;
  color: #454545;
  border: 2px solid #454545;
  border-radius: 10px;
  position: relative;
}

.button::before {
  content: '';
  margin: auto;
  border: 1px dashed #454545;
  border-radius: 5px;
  width: calc(100% - 10px);
  height: calc(100% - 10px);
  position: absolute;
  inset: 0;
  display: inline-block;
}

.button:hover {
  color: #fff;
  background-color: #454545;
}

.button:hover::before {
  border-color: #fff;
}

ボタンのサイズが固定でない場合、内側の要素のサイズは数値を出すことが難しいため、calc()を利用します。

角丸ボタンで内側の要素(サンプルでは::beforeでつくられる部分)も角丸にする場合は、内側の角丸を外側よりも小さめの数値にするといい感じになります。