英字にスライドするボタン

中級者向けのボタンホバーアニメーション。
ボタンをホバーすると日本語から英語に変わる。
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);
		});
	});
});

実際の動き

お問い合わせ CONTACT
みんなにもシェアしてあげて!

この記事を書いた人

WEBサイトで使える“動くUI”を、コピペで実装可能にし、どこでも誰でも使えるコードに特化して発信しているフロントエンドエンジニア。
中学生で初めてコードに出会い初めてコーディングを知る。
その後、WEB制作会社のフロントエンドエンジニアとしてキャリアをスタートし、フリーランスを経て、現在はWEB制作会社の代表取締役。
コーディングによって人生を創り上げてきたからこそ、コードを通して誰かの役に立てたらという想いで、これまでの知識と経験を総動員したコードを公開中。

コメント

コメントする