表示デモ
実装コード
HTML
<div class="demo-wrap">
<button class="btn basic slide-btn slide-btn_right"><span>Button Sample</span></button>
</div>
CSS
@charset "utf-8";
/* サイト共通設定 */
:root{
--primary-color: #03588C;
--primary-accent-color: #D97F30;
--primaty-opacity-color: 0.8;
}
html{
font-size: 62.5%;
}
.demo-wrap {
display: flex;
justify-content: center;
padding: 50px;
}
/* ボタン共通設定 */
.btn {
display:inline-block;
padding: 12px 30px;
font-weight: 600;
line-height: 1.3;
cursor: pointer;
border: 0;
font-size: 1.6rem;
text-decoration: none;
color: #ffffff;
transition: all .25s ease;
-webkit-tap-highlight-color: transparent;
}
.basic {
background: var(--primary-color);
}
/* 変化 */
.slide-btn {
position: relative;
overflow: hidden;
}
.slide-btn span {
position: relative;
z-index: 3;
}
.slide-btn::before {
content: "";
width: 100%;
height: 100%;
background: var(--primary-accent-color);
position: absolute;
top: 0;
left: 0;
transition: .2s;
}
.slide-btn:hover::before,.slide-btn:focus::before {
transform: translateX(0);
transform: translateY(0);
}
/* バリエーション:ボタンスライド */
.slide-btn_right::before {
transform: translateX(100%);
}
ポイント
擬似要素とtransformを利用したアニメーション。
サイトを少しリッチにできる。