[css3]ピュアCSS3によるネオンライト効果
これが実現したい効果です。
ご覧のように、マウスをボタンの中に入れるとネオンライトのような効果があり、マウスをボタンの外に出すと、一定の経路(ボタンの外側)を移動する光線があります。
ネオンライトの実装
ネオンライトの実装は比較的簡単で、複数のシャドウを使用して行います。ボタンに3層の影を付け、それぞれの層は内側から外側に向かってぼかし半径が大きくなるようにし、複数の影を重ねることでネオンライトのような効果を演出しています。そのためのコードは以下の通りです。
HTMLです。
<div class="light">
Neon Button
</div>
CSSです。
body {
background: #050901;
}
.light {
width: fit-content;
padding: 25px 30px;
color: #03e9f4;
font-size: 24px;
text-transform: uppercase;
transition: 0.5s;
letter-spacing: 4px;
cursor: pointer;
}
.light:hover {
background-color: #03e9f4;
color: #050801;
box-shadow: 0 0 5px #03e9f4,
0 0 0 25px #03e9f4,
0 0 0 50px #03e9f4,
0 0 0 200px #03e9f4;
}
最終的には以下のようになります。
モーションビームの実装
ボタンの縁に沿って1本のビームが動いているように見えますが、実は4本のビームがそれぞれ異なる方向に動き、それが重なり合っている効果なのです。下の図のように、左から右、上から下、右から左、下から上の方向に動いています。
その際、ビーム同士が交差しているのですが、ボタンのエッジ部分だけを見てみると、とても1本のビームだけが時計回りに動いているように見えます。
具体的な実装で注意すべき点は以下の通りです。
- 4つの光線はdiv.lightの4つのサブディビジョンに対応し、初期状態ではボタンの左端、上端、右端、下端に配置され、一定方向に反復運動します。
- 各ビームは縦または横が小さく(わずか2px)、透明からネオン色へのグラデーションがかかっているため、見た目には収束する効果があります(つまり、一列に並んでいるようには見えません)。
- 時計回りに見えるように、実際には、ボタンの上のビームから始まり、一定時間後に右のビーム、一定時間後に下のビーム、一定時間後に左のビームと、4つのビームが順番に動いています。ビームとビームの動きには遅れがあります。例えば右側の運動距離が上側の運動距離より小さいために、両者が同時に動き出すと、この2本のビームが交差しなくなってしまい、バラバラで支離滅裂なビームを見ることになるのです。右側のビームは移動距離が短いので、上側のビームがそれに追いつくためには、右側のビームの出発を遅らせる必要があり、アニメーション遅延を与える必要があります。複数のアニメーション遅延の差は、およそ 0.25 秒です。
- ボタンの端にあるビームだけを表示すれば十分なので、div.lightにオーバーフローを与えて非表示にします。
コードはこのようになります。
HTMLです。
<div class="light">
<div></div>
<div></div>
<div></div>
<div></div>
Neon Button
</div>
CSSです。
.light {
position: relative;
padding: 25px 30px;
color: #03e9f4;
font-size: 24px;
text-transform: uppercase;
transition: 0.5s;
letter-spacing: 4px;
cursor: pointer;
overflow: hidden;
}
.light:hover {
background-color: #03e9f4;
color: #050801;
box-shadow: 0 0 5px #03e9f4,
0 0 0 25px #03e9f4,
0 0 0 50px #03e9f4,
0 0 0 200px #03e9f4;
}
.light div {
position: absolute;
}
.light div:nth-child(1){
width: 100%;
height: 2px;
top: 0;
left: -100%;
background: linear-gradient(to right,transparent,#03e9f4);
animation: animate1 1s linear infinite;
}
.light div:nth-child(2){
width: 2px;
height: 100%;
top: -100%;
right: 0;
background: linear-gradient(to bottom,transparent,#03e9f4);
animation: animate2 1s linear infinite;
animation-delay: 0.25s;
}
.light div:nth-child(3){
width: 100%;
height: 2px;
bottom: 0;
right: -100%;
background: linear-gradient(to left,transparent,#03e9f4);
animation: animate3 1s linear infinite;
animation-delay: 0.5s;
}
.light div:nth-child(4){
width: 2px;
height: 100%;
bottom: -100%;
left: 0;
background: linear-gradient(to top,transparent,#03e9f4);
animation: animate4 1s linear infinite;
animation-delay: 0.75s;
}
@keyframes animate1 {
0% {
left: -100%;
}
50%,100% {
left: 100%;
}
}
@keyframes animate2 {
0% {
top: -100%;
}
50%,100% {
top: 100%;
}
}
@keyframes animate3 {
0% {
right: -100%;
}
50%,100% {
right: 100%;
}
}
@keyframes animate4 {
0% {
bottom: -100%;
}
50%,100% {
bottom: 100%;
}
}
これにより、記事のオープニング画像の効果を得ることができます。
さまざまな色のネオンライト
別の色でネオンライト効果を出したい場合はどうすればいいですか?関連する色をもう一度すべて変更する必要があるのでしょうか?実はもっと簡単な方法があります。それは filter:hue-rotate(20deg) を使って div.light とその中のすべての要素の色相・色調を一度に変更する方法です。
<ブロッククオートCSS 関数 hue-rotate() は、要素およびそのコンテンツの色相を回転させます。
最終的には以下のようになります。
上記はネオン効果の詳細の純粋なCSS3実装であり、ネオン効果のCSS3実装に関する詳細な情報は、スクリプトの家の他の関連記事に注意を払うしてください!.
関連
-
[CSSチュートリアル】純粋なCSSでWebページの内容をコピーできないようにする方法
-
[CSSチュートリアル】QQtabBarからCSS命名規則BEMの詳細を見る
-
[CSSチュートリアル】新しいCSS:whereと:is擬似クラス関数とは?
-
[css3]css3は、背景画像の色を変更するためのさまざまな方法を実現するために
-
[CSSレイアウト例】CSSで中央揃えを実現する方法N種
-
[CSSチュートリアル】ピュアCSSでDIVホバーを実現するサンプルコード(固定位置編)
-
[CSSチュートリアル】CSSで実現できるのなら、わざわざJavaScriptを使う必要はない
-
[css3]css3 elastic box flexによる3カラムレイアウトの実装。
-
[css3]CSS 3.0テキストホバー飛び効果コード
-
[css3]css3 use transform to create walking 2D clock.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[css3]css3はtransform-originを使用して、大きな円上のドット分布のレイアウトと回転を実現します。
-
[CSSチュートリアル】CSSもこんな風に遊べる?気まぐれグラデーションの極意
-
[Div+CSSチュートリアル】divの背景を透明にする設定例
-
[css3]スクロールバー美化効果を実現するcss3サンプルコード
-
[CSSチュートリアル】カラフルで知的なシャドウ効果を実現するCSS
-
[CSSチュートリアル]cssに0.5pxの行を実装してモバイル互換の問題を解決する(推奨)
-
[css3]CSS3:overflowプロパティ
-
[CSSチュートリアル]マウスをスライドさせてカードを浮かせるCSSの例
-
左上または右上にリマインダーのドットを表示するCSS3サンプルコード[CSSチュートリアル
-
[CSSチュートリアル】css3 背景画像 半透明 コンテンツ 不透明 方法例