HTML+CSS+JS でキャンバスがマウスの小さな円に追従する特殊効果のソースコードを実現

HTML+CSS+JS でキャンバスがマウスの小さな円に追従する特殊効果のソースコードを実現

効果(ソースコードは最後にあります):

ここに画像の説明を挿入

成し遂げる:

1. タグを定義します。

 <h1>オーロラの夜</h1>
 <canvas id="draw" style=" position: fixed; display: block;">  
			現在のブラウザは Canvas をサポートしていません。ブラウザを変更してもう一度お試しください</canvas>

2. 基本的なテキストスタイル:

h1{
   位置: 絶対;
   上位: 50%;
   左: 50%;
   変換: translate(-50%,-50%);
   フォントサイズ: 5em;
   フォントファミリー: 'fangsong';
   色: rgb(38, 205, 247);
  }

上位: 50%;
左: 50%;
transform: translate(-50%,-50%); 中央揃え
3. js 部分の詳細についてはコメントを参照してください。

<スクリプト>
  /* まずキャンバスを取得します */
  var キャンバス = document.querySelector("#draw");
  var yuan = canvas.getContext("2d");  
  /* ウィンドウサイズ変更イベントをバインドして、キャンバスがいつでもブラウザの表示領域を埋めることができるようにします*/
   ウィンドウをサイズ変更します。
  関数 resizeCanvas(){
   キャンバスの幅=ウィンドウの内側の幅;
   キャンバスの高さ=ウィンドウの内側の高さ;
  }
  キャンバスのサイズを変更します。 

  /* 移動イベントがトリガーされたときに生成される小さな円を格納する配列を以下で定義します*/
  var arr = [];
  
  /* 小さな円を描く方法、x と y は初期位置、r は円の半径です */
  関数円 (x,y,r){
   .x = x;
   y = y;
   r = r;
   /* ランダムな色を取得します */
   this.color = `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
   /* 円の移動方向。ランダム関数は 0.0 から 1.0 の間の乱数を返します。x はランダムな正または負の数、y はランダムな正の数です。*/
   this.xZou = parseInt(Math.random()*10-5);
   this.yZou = parseInt(Math.random()*10);  
   /* この要素を arr 配列の末尾に追加します */ 
   arr.push(これを);
  }

  /* 円を更新するメソッド */
   円.プロトタイプ.更新 = 関数() {
    /* x と y が増加し、円形を形成します */
   this.x = this.x + this.xZou;
   this.y = this.y + this.yZou;
   /* 半径はゆっくりと減少します*/
   this.r = this.r - 0.1 ;
   /* 半径が 1 未満の場合は円をクリアします */
   if(this.r<0){
    これを削除してください。
   }
   }
   /* 小さい円の機能を削除します*/
   サークルプロトタイプ削除 = 関数 (){
    /* 配列を走査し、この関数を呼び出したのと同じ円を見つけ、スプライス関数を使用してそれを削除します*/
   for(let i=0;i<arr.length;i++){
     if(this==arr[i])
     {
      arr.splice(i,1);
     }
   }
  }
   /* 小さな円をレンダリングします */
   円.プロトタイプ.レンダリング = 関数(){

   yuan.beginPath();
   yuan.arc(this.x,this.y,this.r,0,2*3.14,false);
   yuan.fillStyle = this.color;
   yuan.fill();
   }
   /* マウスオーバーイベントをキャンバスにバインドします */  
   canvas.addEventListener('mousemove',function(e){
    /* x、y、rを渡します。 offsetX 左側からの距離、..、*/
   新しい円(e.offsetX、e.offsetY、Math.random()*15); 
   })

    /* タイマーは 30 ミリ秒ごとに小さな円をレンダリングし、アニメーションを開始します */
   setInterval(関数(){
     /* 画面をクリア */
    yuan.clearRect(0,0,canvas.width,canvas.height);
    /* 配列をループして各円を更新してレンダリングします*/
    for(let i=0;i<arr.length;i++){
     /* 更新*/
     arr[i].更新されました();
     /* ブラウザがサポートしている場合はレンダリングします */
     (arr[i].render())の場合{
      arr[i].render();
     }
     
    }

   },30)

 </スクリプト>

キャンバスリンク
splice() メソッドの連鎖
random() メソッドの連鎖
push() メソッドの連鎖
イベントリンクのサイズ変更

完全なソースコード:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
 <メタ文字セット="UTF-8">
 <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
 <title>ドキュメント</title>
 <スタイル>
  *{
   マージン: 0;
   パディング: 0;
   ボックスのサイズ: 境界線ボックス;
  }
  
  体{
   背景色: rgb(72, 75, 122);
  }
  
  h1{
   位置: 絶対;
   上位: 50%;
   左: 50%;
   変換: translate(-50%,-50%);
   フォントサイズ: 5em;
   フォントファミリー: 'fangsong';
   色: rgb(38, 205, 247);
  }
  
 </スタイル>
</head>
<本文>
 
  <h1>オーロラの夜</h1>

 <canvas id="draw" style=" position: fixed; display: block;">  
			現在のブラウザは Canvas をサポートしていません。ブラウザを変更してもう一度お試しください</canvas>

 <スクリプト>
  /* まずキャンバスを取得します */
  var キャンバス = document.querySelector("#draw");
  var yuan = canvas.getContext("2d");  
  /* ウィンドウサイズ変更イベントをバインドして、キャンバスがいつでもブラウザの表示領域を埋めることができるようにします*/
   ウィンドウをサイズ変更します。
  関数 resizeCanvas(){
   キャンバスの幅=ウィンドウの内側の幅;
   キャンバスの高さ=ウィンドウの内側の高さ;
  }
  キャンバスのサイズを変更します。 

  /* 移動イベントがトリガーされたときに生成される小さな円を格納する配列を以下で定義します*/
  var arr = [];
  
  /* 小さな円を描く方法、x と y は初期位置、r は円の半径です */
  関数円 (x,y,r){
   .x = x;
   y = y;
   r = r;
   /* ランダムな色を取得します */
   this.color = `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
   /* 円の移動方向。ランダム関数は 0.0 から 1.0 の間の乱数を返します。x はランダムな正または負の数、y はランダムな正の数です。*/
   this.xZou = parseInt(Math.random()*10-5);
   this.yZou = parseInt(Math.random()*10);  
   /* この要素を arr 配列の末尾に追加します */ 
   arr.push(これを);
  }

  /* 円を更新するメソッド */
   サークルプロトタイプ更新 = 関数() {
    /* x と y が増加し、円形を形成します */
   this.x = this.x + this.xZou;
   this.y = this.y + this.yZou;
   /* 半径はゆっくりと減少します*/
   this.r = this.r - 0.1 ;
   /* 半径が 1 未満の場合は円をクリアします */
   r<0の場合
    これを削除してください。
   }
   }
   /* 小さい円の機能を削除します*/
   サークルプロトタイプ削除 = 関数 (){
    /* 配列を走査し、この関数を呼び出したのと同じ円を見つけ、スプライス関数を使用してそれを削除します*/
   for(let i=0;i<arr.length;i++){
     if(this==arr[i])
     {
      arr.splice(i,1);
     }
   }
  }
   /* 小さな円をレンダリングします */
   円.プロトタイプ.レンダリング = 関数(){

   yuan.beginPath();
   yuan.arc(this.x,this.y,this.r,0,2*3.14,false);
   yuan.fillStyle = this.color;
   yuan.fill();
   }
   /* マウスオーバーイベントをキャンバスにバインドします */  
   canvas.addEventListener('mousemove',function(e){
    /* x、y、rを渡します。 offsetX 左側からの距離、..、*/
   新しい円(e.offsetX、e.offsetY、Math.random()*15); 
   })

    /* タイマーは 30 ミリ秒ごとに小さな円をレンダリングし、アニメーションを開始します */
   setInterval(関数(){
     /* 画面をクリア */
    yuan.clearRect(0,0,canvas.width,canvas.height);
    /* 配列をループして各円を更新してレンダリングします*/
    for(let i=0;i<arr.length;i++){
     /* 更新*/
     arr[i].更新されました();
     /* ブラウザがサポートしている場合はレンダリングします */
     (arr[i].render())の場合{
      arr[i].render();
     }
     
    }

   },30)

 </スクリプト>
</本文>
</html>

他の:

今日の3つの自己分析: 快適な生活は退屈です。挑戦と勝利の達成に満ちた人生こそが人生の真の意味です。

これで、HTML+CSS+JS を使用したマウスに追従するキャンバスの小さな円の特殊効果のソースコードに関するこの記事は終了です。マウスに追従するキャンバスの小さな円の特殊効果に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • HTMLタグを削除し、HTMLサンプルコードを削除する
  • フロントエンド HTML+CSS+JS を使用してシンプルな TODOLIST 関数を開発する (メモ帳)
  • ローカル写真をアップロードする前にプレビューコード例を実装するための HTML5 と jQuery
  • 手動および自動カルーセルを実現するための js+html+css
  • HTML で JavaScript を使用する 2 つの方法
  • HTMLのさまざまなタグを学ぶ方法

<<:  Dockerコンテナを外部IPとポートにバインドする方法

>>:  Ubuntu システムにおける Mysql ERROR 1045 (28000): ユーザー root@localhost へのアクセスが拒否される問題の解決方法

推薦する

MySQLのSeconds_Behind_Masterの詳細な説明

目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

ウェブサイトのデザイン体験のための7つの異なるカラースキーム

ウェブサイト構築におけるカラーマッチングは非常に特殊であり、ウェブサイトのテーマ、感情、雰囲気などの...

カルーセル効果を書くためのjs

この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...

Win10 の組み込み Linux システムを使用して Spring Boot プロジェクトを開始する方法

1. Windows10の組み込みLinuxサブシステムをインストールする1.1. Linuxサブシ...

Mysql マスタースレーブ同期構成の実践の詳細な説明

1. はじめに以前、「MySQL マスター スレーブ同期の原理」という記事を書きました。この記事を読...

CentOS 8 に htop をインストールする方法のチュートリアル

システムをインタラクティブに監視したい場合は、htop コマンドが最適な選択肢の 1 つです。 ht...

MySQL の起動オプションとシステム変数の例の詳細な説明

目次ブートオプションコマンドラインパラメータの長い形式と短い形式設定ファイル構成グループシステム変数...

Vueユーザーが長時間操作せずにログインページからログアウトするように実装する2つの方法

目次問題の説明フロントエンド制御(方法1)アイデアコードバックエンド制御(方法2)アイデアコード要約...

Linux の Centos7 に Mysql5.7.19 をインストールする詳細なチュートリアル

1. MySQLをダウンロードするURL: https://dev.mysql.com/downlo...

集める価値のある 15 個の JavaScript 関数

目次1. 数字を逆にする2. 配列内の最大のn個の数値を取得する3. 階乗を計算する4. 現在の動作...

Vue は、デスクトップから Web ページにファイルをドラッグするためのサンプル コードを実装します (画像/オーディオ/ビデオを表示できます)

効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...

JavaScript ツールチェーンの不完全なガイド

目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...

MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル

MySQL のインストールに関する以前のメモを要約して、皆さんと共有しました。ステップ 1: mys...

Windows Server 2008 のサーバー パフォーマンス監視に関するチュートリアル

次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...