中級者向けのボタンホバーアニメーション。
ボタンをホバーすると日本語から英語に変わる。
CSSだけではなく、JSも使用することでちょっとリッチなアニメーションに。
派手になりすぎたくないコーポレートサイトなどにおススメ。
HTML
<a href="#" class="ugkBtnTup">
<span class="ugkBtnTup__text">
<span class="ugkBtnTup__main">お問い合わせ</span>
<span class="ugkBtnTup__sub">CONTACT</span>
</span>
<span class="ugkBtnTup__arrow">→</span>
</a>
CSS
.ugkBtnTup {
display: flex;
align-items: center;
justify-content: space-between;
width: 200px;
max-width: 100%;
height: 60px;
padding: 0 20px;
color: #333333;
border: solid 1px #333333;
border-radius: 100px;
font-weight: bold;
transition: all ease .3s;
}
.ugkBtnTup__text {
overflow: hidden;
height: 1.5em;
line-height: 1.5em;
display: flex;
flex-direction: column;
}
.ugkBtnTup__sub {
color: #fff;
}
.ugkBtnTup__arrow {
transition: all ease .3s;
}
.ugkBtnTup .ugkBtnTup__main span, .ugkBtnTup .ugkBtnTup__sub span {
display: inline-block;
}
.ugkBtnTup:hover {
background-color: #333333;
}
.ugkBtnTup:hover .ugkBtnTup__main span, .ugkBtnTup:hover .ugkBtnTup__sub span {
transform: translateY(-100%);
}
.ugkBtnTup:hover .ugkBtnTup__arrow {
color: #fff;
}
JS
document.addEventListener('DOMContentLoaded',() =>{
const targets = document.querySelectorAll('.ugkBtnTup__main, .ugkBtnTup__sub');
targets.forEach((el) => {
const text = (el.textContent || '').trim();//文字列を取り出す
const chars = Array.from(text);//各文字ごとに分割
el.textContent = "";
chars.forEach((ch,i) => {
const span = document.createElement('span');
span.textContent = ch;
const delay = 0.03 * (i + 1);
span.style.transitionDelay = `${delay}s`;
span.style.webkitTransitionDelay = `${delay}s`;
el.appendChild(span);
});
});
});

コメント