純粋なCSS3で実装されたネオンライト効果

純粋なCSS3で実装されたネオンライト効果

達成される効果は次のとおりです。

マウスがボタン内に移動すると、ネオンライトのような効果が生成され、マウスがボタンから外に出ると、光線が固定された軌道に沿って(ボタンの周りを)移動することがわかります。

ネオンライトの実現

ネオンライトの実装は比較的簡単で、複数の影を使用して行うことができます。ボタンに 3 層の影を追加し、各層の影のぼかし半径は内側から外側に向かって大きくなります。複数の影を重ね合わせると、ネオンライトのような効果が得られます。このセクションのコードは次のとおりです。

HTML:

 <div class="light">
    ネオンボタン
 </div>

CS: ...

体 {
 背景: #050901;   
}
。ライト {
  幅: コンテンツに合わせる;
  パディング: 25px 30px;
  色: #03e9f4;
  フォントサイズ: 24px;
  テキスト変換:大文字;
  遷移: 0.5秒;
  文字間隔: 4px;
  カーソル: ポインタ;
}
.light:hover {
  背景色: #03e9f4;
  色: #050801;
  ボックスシャドウ: 0 0 5px #03e9f4,
              0 0 25ピクセル #03e9f4,
              0 0 50ピクセル #03e9f4,
              0 0 200px #03e9f4;
}

最終的な効果は次のようになります。

移動ビームの実装

ボタンの端に沿って 1 本のビームだけが動いているように見えますが、実際には異なる方向に動く 4 本のビームが重ね合わされています。移動方向は、次の図に示すように、左から右、上から下、右から左、下から上です。

このプロセスの間、光線は互いに交差します。ボタンの端だけを見ると、1 つの光線だけが時計回り方向に動いているように見えます。

具体的な実装において注意すべき点をいくつか挙げます。

  • 4 つのビームは、div.light の 4 つのサブ div に対応しています。ビームの初期位置はボタンの左端、上端、右端、下端で、一定の方向に繰り返し移動します。
  • 各ビームは高さも幅も非常に小さく(わずか 2 ピクセル)、透明からネオンへのグラデーションがあるため、収束しているように見えます(完全な線ではありません)。
  • 私たちが見ているものが時計回りの動きであることを確認するために、4 つのビームの動きは実際には順序どおりになっています。まず、ボタンの上のビームが動き始め、しばらくすると右側のビームが動き、しばらくすると下のビームが動き、しばらくすると左側のビームが動きます。光線間の移動には遅延があります。上と右の光線を例にとると、これらが同時に動き始めると、右側の移動距離が上の移動距離よりも小さいため、2 つの光線が交差する機会を逃し、私たちが目にするのは、切断された、一貫性のない光線になります。右ビームの移動距離が短いため、上のビームがそれに「追いつく」ためには、右ビームの「出発を遅らせる」必要があり、アニメーションの遅延を与える必要があります。同様に、残りの 2 つのビームにもアニメーションの遅延が必要です。複数のアニメーション間の遅延は約 0.25 秒で十分です。
  • ボタンの端の周りにビームを表示すれば十分なので、div.lightにoverflow hiddenを設定します。

コードは次のとおりです。

HTML:

<div class="light">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    ネオンボタン
</div>

CS: ...

。ライト {
  位置: 相対的;
  パディング: 25px 30px;
  色: #03e9f4;
  フォントサイズ: 24px;
  テキスト変換:大文字;
  遷移: 0.5秒;
  文字間隔: 4px;
  カーソル: ポインタ;
  オーバーフロー: 非表示;
}
.light:hover {
  背景色: #03e9f4;
  色: #050801;
  ボックスシャドウ: 0 0 5px #03e9f4,
              0 0 25ピクセル #03e9f4,
              0 0 50ピクセル #03e9f4,
              0 0 200px #03e9f4;
}
.light div {
  位置: 絶対;
}
.light div:n番目の子(1){
  幅: 100%;
  高さ: 2px;
  上: 0;
  左: -100%;
  背景: 線形グラデーション(右へ、透明、#03e9f4);
  アニメーション: animate1 1s 線形無限;
}
.light div:n番目の子(2){
  幅: 2px;
  高さ: 100%;
  上: -100%;
  右: 0;
  背景: 線形グラデーション(下へ、透明、#03e9f4);
  アニメーション: animate2 1s 線形無限;
  アニメーション遅延: 0.25秒;
}
.light div:n番目の子(3){
  幅: 100%;
  高さ: 2px;
  下部: 0;
  右: -100%;
  背景: 線形グラデーション(左へ、透明、#03e9f4);
  アニメーション: animate3 1s 線形無限;
  アニメーション遅延: 0.5秒;
}
.light div:n番目の子(4){
  幅: 2px;
  高さ: 100%;
  下部: -100%;
  左: 0;
  背景: 線形グラデーション(上へ、透明、#03e9f4);
  アニメーション: animate4 1s 線形無限;
  アニメーション遅延: 0.75秒;
}
@keyframes アニメーション1 {
  0% {
    左: -100%;
  }
  50%,100% {
    左: 100%;
  }
}
@keyframes アニメーション2 {
  0% {
    上: -100%;
  }
  50%,100% {
    上: 100%;
  }
}
@keyframes アニメーション3 {
  0% {
    右: -100%;
  }
  50%,100% {
    右: 100%;
  }
}
@keyframes アニメーション4 {
  0% {
    下部: -100%;
  }
  50%,100% {
    下部: 100%;
  }
}

これにより、記事の冒頭の写真の効果が得られます。

さまざまな色のネオンライト

他の色でネオンライト効果を実現したい場合はどうすればよいでしょうか?関連する色を再度変更する必要がありますか?実際、もっと簡単な方法があります。それは、filter:hue-rotate(20deg) を使用して、div.light とすべての内部要素の色相/色調を一度に変更することです。

hue-rotate() CSS 関数は、要素とその内容の色相を回転します。

最終的な効果は次のようになります。

上記は、純粋に CSS3 で実装されたネオンライト効果の詳細です。CSS3 でネオンライト効果を実装する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

<<:  少なくともn日間連続してログインしているユーザーに対するSQLクエリ

>>:  vue-video-player を使用してライブ放送を実現する方法

推薦する

HTML ページでコンテンツの選択、コピー、右クリックを防止する方法の詳細な説明

時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

要素テーブルテーブルコンポーネントの複数フィールド(複数列)ソート方法

目次必要:発生した問題:解決する:必要:要素テーブル内の複数の列を並べ替えるには、日付の並べ替えをク...

Linux カーネルの copy_{to, from}_user() に関する考察

目次1. copy_{to,from}_user() とは何か1. copy_{to,from}_u...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

ドロップダウンボックス、テキストフィールド、ファイルフィールド 上半分はデモンストレーション効果、下...

オンライン MYSQL 同期エラーのトラブルシューティング方法の概要 (必読)

序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...

モバイルフロントエンド適応ソリューション(概要)

ネットで検索してみたところ、多くの面接でモバイル適応方法について質問されることが分かりました。最近い...

VirtualBox を使用して Linux クラスターをシミュレートする方法

1. ホストMacbookにHOSTをセットアップする前回のドキュメントでは仮想マシンの静的 IP ...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

React.Childrenの詳しい使い方

目次1. React.Children.map 2. React.Children.forEach ...

CSS 8 目を引く HOVER 効果のサンプル コード

1. エフェクトHTMLを送信する <div id="送信ボタン">...

MySQL 高可用性クラスタの展開とフェイルオーバーの実装

目次1. 内閣府1. コンセプト2. MHAの構成3. MHAの特徴2. MySQL+MHAをビルド...

16進カラーコード(完全版)

赤とピンク、およびそれらの 16 進コード。 #990033 #CC6699 #FF6699 #FF...

VUEはタイムライン再生コンポーネントを実装します

この記事の例では、タイムライン再生コンポーネントを実装するためのVUEの具体的なコードを参考までに共...