CSSを使ってグローエフェクトボタンを作成する方法

公開日 2024年12月22日
更新日 2025年1月6日
7 分で読める
CSS3HTML5JavaScript

この記事では、HTMLとCSSを使用して、グローエフェクトを持つボタンを作成する方法を紹介します。マウスをボタンの上に移動すると、光の輪がマウスの動きに追従してダイナミックに変化し、流れる光のようなビジュアル効果を生み出します。

成果物


実装手順

  1. HTML構造 まず、シンプルなHTMLページを作成します。ページには3つのボタンを配置し、それぞれ<a>タグを使用して作成します。また、style属性を使って異なる色を設定します:
<a href="#" style="--color: #0f0"><span>BUTTON</span></a>
<a href="#" style="--color: #ff0"><span>BUTTON</span></a>
<a href="#" style="--color: #f0f"><span>BUTTON</span></a>

ここで使用されている--colorは、CSSカスタムプロパティで、ボタンのメインカラーを動的に設定するために使用しています。

  1. CSSスタイル グローエフェクトの主な部分は以下のCSSで実現しています:
/* グローバルスタイル */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: Arial, sans-serif;
}

/* レイアウトスタイル */
body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 50px;
    height: 100vh;
    background-color: #222;
}

/* ボタンの基本スタイル */
a {
    position: relative;
    padding: 20px 60px;
    background-color: rgba(45, 45, 45, 1);
    border-radius: 50px;
    text-decoration: none;
    color: #999;
    font-size: 1.5rem;
    transition: 0.5s;
    overflow: hidden;
}

グローエフェクトのコア部分:

::before疑似要素: 動的な放射状グラデーションの光を生成。

a::before {
    content: '';
    position: absolute;
    top: var(--y, 0px);
    left: var(--x, 0px);
    transform: translate(-50%, -50%);
    width: 200px;
    height: 200px;
    background: radial-gradient(var(--color), transparent, transparent);
    opacity: 0;
    transition: 0.5s;
}
a:hover::before {
    opacity: 1;
}

::after疑似要素: ボタン内部に半透明の背景を追加し、光の対比を強調。

a::after {
    content: '';
    background-color: rgba(45, 45, 45, 0.8);
    position: absolute;
    inset: 2px;
    border-radius: 48px;
}

  1. JavaScriptで光の動きを実現 マウスの移動イベントを監視し、--x--yの値を動的に更新します:
const buttons = document.querySelectorAll('a');
buttons.forEach(button => {
    button.addEventListener('mousemove', e => {
        const x = e.clientX - e.target.offsetLeft;
        const y = e.clientY - e.target.offsetTop;

        e.target.style.setProperty('--x', `${x}px`);
        e.target.style.setProperty('--y`, `${y}px`);
    });
});

まとめ

簡単なHTML、CSS、少しのJavaScriptを使用するだけで、動的な光効果を持つボタンを作成できます。このエフェクトは、美しいだけでなく、ユーザー体験を向上させることができ、ウェブサイトに非常に適しています。ぜひ試してみてください!

概要

技術的洞察、経験、思考を共有する個人ブログ

クイックリンク

お問い合わせ

  • Email: hushukang_blog@proton.me
  • GitHub

© 2025 CODE赤兎. 無断転載禁止