ボタン要素のデザインのサンプルです。class名、色やフォントまわりなどは適宜変更してください。
以下サンプルをもとに、いろいろいじってみるのもたのしいと思います。
ボタン要素には共通で以下の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
に置き換えてください。
/* 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
いちばんシンプルなボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.button {
color: #fff;
background-color: #454545;
}
.button:hover {
background-color: #d5393e;
}
一番シンプルな基本の形です。:hover
でマウスオーバー時の挙動を指定します(以降のサンプルも同様)
ボタンサンプル2
角を丸くしてすこし柔らかい印象のボタン。
<button type="button" name="button" class="button">ボタンサンプル</button>
.button {
color: #fff;
background-color: #454545;
border-radius: 5px;
}
.button:hover {
background-color: #d5393e;
}
border-radius
で指定する角丸の数値によって印象が変わります。px
以外にも%
やrem
などの単位が利用できます。
ボタンサンプル3
左右を完全な半円にしたボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.button {
color: #fff;
background-color: #454545;
border-radius: 20px;
}
.button:hover {
background-color: #d5393e;
}
border-radius
の値を短辺(ボタンの高さ)以上の数値にすると完全な半円になります。
ボタンサンプル4
シンプルな枠付きボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.button {
color: #d5393e;
background-color: #fff;
border: 1px solid #d5393e;
}
.button:hover {
color: #fff;
background-color: #d5393e;
}
サンプル1の枠線バージョンです。この状態で、角丸をつけたり線のスタイルを変更すると印象が変わります。
ボタンサンプル5
完全な正円のボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.button {
color: #d5393e;
background-color: #fff;
border: 1px solid #d5393e;
border-radius: 50%;
width: 150px;
height: 150px;
}
.button:hover {
color: #fff;
background-color: #d5393e;
}
width
とheight
を同じ値にしてborder-radius: 50%;
を指定すると、完全な正円をつくることができます。ただし長い文字のボタンには不向きなため、アイコンをボタンとして利用するなど、使い所を考えた方がよさそうです。
なお、a
タグで利用する場合はこのままだと上方に文字がきてしまうので、line-height
で高さを調整する必要があります。
ボタンサンプル6
マウスオーバー時に「押した感じ」がするボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.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
<button type="button" name="button" class="button">ボタンサンプル</button>
.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
の影部分の太さを細くした差分(サンプルでは5px
→3px
で差分2px
)をtranslateY
でずらしています。
ボタンサンプル8
ステッチが入ったようなデザインボタン
<button type="button" name="button" class="button">ボタンサンプル</button>
.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
<button type="button" name="button" class="button">ボタンサンプル</button>
.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
でつくられる部分)も角丸にする場合は、内側の角丸を外側よりも小さめの数値にするといい感じになります。