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 へのアクセスが拒否される問題の解決方法

推薦する

Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。

序文Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません...

CSSテーマを簡単に切り替える方法の詳細な説明

最近、個人の Web サイトに非常にシンプルなカラー スキーム (テーマ) スイッチャーを追加しまし...

JavaScript 状態コンテナ Redux の詳細な説明

目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

ウェブページの読み込み進捗状況バーの詳細な説明(推奨)

(Web ページの読み込み中に、コンテンツが多すぎて読み込みと待機が続くことがあります。このとき、...

JS での new の手書き実装

目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...

各グループの最新データを取得するためにMySQLベースのグループを実装する

序文:グループ化関数はグループ内の最初のデータを取得しますが、各グループ内の最新のデータを取得する必...

Linux サーバーのスクリプトを自動的にバックアップする方法 (mysql、添付ファイルのバックアップ)

1.backup.shスクリプトファイルを作成する #!/bin/sh ソースフォルダ=/データ ...

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

.html、.htm、.shtml、.shtm の違いと関連性について簡単に説明します。

ご存知のとおり、私たちが毎日閲覧する Web ページ、Web サイト、または Web ページには独自...

Linux CRM デプロイメント コードの詳細な説明

Linuxの基本設定 Linux環境でpython3をコンパイルしてインストールする 1. Linu...

MySQL データ型 DECIMAL の使用方法の詳細な説明

MySQL DECIMALデータ型は、データベースに正確な数値を保存するために使用されます。会計シス...

アコーディオンセカンダリメニューを実装するためのjQueryプラグイン

この記事では、jQueryプラグインを使用してアコーディオンセカンダリメニューを作成します。具体的な...

MySQLの使用中に発生した問題

ここでは、MySQL の使用中に発生するいくつかの問題とその解決策を示します。 sql_mode=o...