この記事では、HTML/CSSを使ってボタンの実装を行う必要が生じたときのために、ボタンの実装サンプルを書いていく。
プログラミング学習未経験からでもITエンジニアとしての基礎を身に付けることができるオススメのスクール >> 【DMM WEBCAMP】
ボタン
ボタンの基本的なスタイル
以降のこの記事の内容ではこのボタンを基本形として使用し、これにスタイルを当てることで様々なボタンを表現している。
index.html
<body>
<div class="container">
<button class="btn">Button</button>
</div>
</body>
style.scss
$cWhite: white;
$cBlack: black;
.container {
text-align: center;
}
.btn {
display: inline-block;
background-color: $cWhite;
color: $cBlack;
border: 1px solid $cBlack;
padding: 10px 40px;
margin: 20px 0;
font-size: 20px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
}
ホバーで色が変わるボタン
index.html
<body>
<div class="container">
<button class="btn hv-color">Button</button>
</div>
</body>
style.scss
.btn {
&.hv-color:hover {
background-color: $cBlack;
color: $cWhite;
}
}
ホバーで影ができるボタン
index.html
<body>
<div class="container">
<button class="btn hv-float">Button</button>
</div>
</body>
style.scss
.btn {
&.hv-float:hover {
box-shadow: 5px 5px 10px 0 rgba(0, 0, 0, 0.5);
}
}
ホバーで影ができるボタン2
index.html
<body>
<div class="container">
<button class="btn hv-shadow">Button</button>
</div>
</body>
style.scss
.btn {
&.hv-shadow {
box-shadow: none;
&:hover {
transform: translate(-2.5px, -2.5px);
box-shadow: 5px 5px 0 0 $cBlack;
}
}
}
ホバーすると押し下げられた感じになるボタン
index.html
<body>
<div class="container">
<button class="btn hv-solid">Button</button>
</div>
</body>
style.scss
.btn{
&.hv-solid {
box-shadow: 2px 2px 0 0 $cBlack;
border-radius: 7px;
&:hover {
transform: translate(2px, 2px);
box-shadow: none;
}
}
}
ホバーすると背景色がスライドするボタン
index.html
<body>
<div id="container">
<button class="btn slide-bg">Button</button>
</div>
</body>
style.scss
.btn {
&.slide-bg {
position: relative;
overflow: hidden;
z-index: 10; // ローカルスタックコンテキストを生成する。1以上の整数なら何でも良い。
&::before {
content: '';
display: inline-block;
height: 100%;
width: 100%;
background-color: $cBlack;
position: absolute;
top: 0;
left: 0;
transform: translateX(-100%);
transition: transform 0.5s;
z-index: -1; // 負の値にして、ボタンの文字列(ラベル)より下になる様にする。
}
&:hover {
color: $cWhite;
&::before {
transform: none;
}
}
}
}