キャンバスを使った雪の結晶の効果を実現するコード例
今日はcanvasを使って雪の結晶のエフェクトを実現します❄️。
I. キャンバスとは何ですか?
HTML5 の <canvas> 要素は、グラフィックを描画するために使用され、スクリプト(通常は JavaScript)によって実行されます。
canvas>タグはあくまでグラフィックの入れ物であり、グラフィックを描くにはスクリプトを使用する必要があります。
キャンバスを使って、パス、ボックス、円、文字を描いたり、画像を追加したりと、さまざまな使い方ができます。
II. キャンバスの基本的な使い方
1. キャンバスの作成(Canvas)
<canvas id="myCanvas" width="200" height="100"></canvas>
2. JavaScriptで画像を描画する
// First find the <canvas> element
var c=document.getElementById("myCanvas");
//then create the context object
var ctx=c.getContext("2d");
// The following two lines of code draw a red rectangle.
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
getContext("2d") オブジェクトは、パス、矩形、円、文字、画像の追加を描画する複数のメソッドを持つ、組み込みの HTML5 オブジェクトです。
fillStyleプロパティには、CSSカラー、グラデーション、パターンを設定できます。
3. キャンバス座標
キャンバスは2次元の格子状です。
キャンバスの左上隅の座標は(0,0)
ctx.fillRect(0,0,150,75);
上記のfillRectメソッドは、パラメータ(0,0,150,75)を持ちます。
意味:キャンバス上に、左上の角(0,0)から始まる150x75の矩形を描画します。
4.キャンバス - パス
moveTo(x,y) 線の始点となる座標を定義します。
lineTo(x,y) は行末の座標を定義する
キャンバスで円を描くには、次のメソッドを使います。
arc(x,y,r,start,stop)
arc()を使って円を描画する
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
第三に、スノーフレークフローティングの実装というアイデア
1. キャンバス(Canvas)を作成する
var canvas =document.getElementById("canvas")
//The parameter contextID specifies the type of canvas you want to draw on.
//The only currently legal value is "2d", which specifies a two-dimensional drawing
// and causes this method to return an environment object that derives a 2D drawing API.
var context = canvas.getContext("2d")
var w =window.innerWidth
var h =window.innerHeight
canvas.width = w;
canvas.height =h;
2. 雪の結晶用のオブジェクトの配列を作成します。
var count =200 //number of snowflakes
var snows=[] //array of snowflake objects
for (var i=0 ; i< count;i++){
snows.push({
x:Math.random()*w,//Math.random() is used to generate random numbers from 0 to 1
y:Math.random()*h,
r:Math.random()*5,
})
}
3. 雪の結晶のスタイルを描く
function draw(){
context.clearRect(0,0,w,h)
context.beginPath()
for(var i=0; i<count;i++){
var snow = snows[i];// iterate through each snowflake
context.fillStyle ="rgb(255,255,255)" //Set the style of the snowflakes
context.shadowBlur=10;
context.shadowColor="rgb(255,255,255)";
//moveTo method is able to move to the specified coordinates
context.moveTo(snow.x,snow.y)
// use canvas arc() to create a circle
// x, y, r: x and y coordinates of the center of the circle, r is the radius
// 0,Math.PI * 2 start and end radians
context.arc(snow.x,snow.y,snow.r,0,Math.PI * 2)
}
// Canvas fill
context.fill()
move()
}
4. スノーフレーク・フラッタリングの実装
function move(){
for (var i=0;i<count;i++){
var snow =snows[i];
snow.y +=(7-snow.r)/10 //from top to bottom
snow.x +=((5-snow.r)/10)//Fall from left to right
if(snow.y>h){
snows[i]={
x:Math.random()*w,
y:Math.random()*h,
r:Math.random()*5,
}
}
}
}
5. リフレッシュの設定
draw()
//refresh every millisecond
setInterval(draw,1)
6. フルコード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Snowflake floating of using canvas element for drawing graphics on web pages. </title>
<style type="text/css">
*{
margin:0;
padding:0;
/* background-color: seagreen; */
background: url("snowman.jpg") no-repeat;
background-size:100% 100%;
}
/* .can{
filter: blur(1px);
} */
</style>
</head>
<body>
<canvas id="canvas" class="can"></canvas>
<script type="text/javascript">
The //canvas element is used to draw graphics on a web page.
var canvas =document.getElementById("canvas")
//The parameter contextID specifies the type of canvas you want to draw on.
//The only currently legal value is "2d", which specifies a two-dimensional drawing
// and causes this method to return an environment object that derives a 2D drawing API.
var context = canvas.getContext("2d")
var w =window.innerWidth
var h =window.innerHeight
canvas.width = w;
canvas.height =h;
var count =200 //number of snowflakes
var snows = [] // array of snowflake objects
for (var i=0 ; i< count;i++){
snows.push({
x:Math.random()*w,//Math.random() is used to generate random numbers from 0 to 1
y:Math.random()*h,
r:Math.random()*5,
})
}
// Draw snowflakes
function draw(){
context.clearRect(0,0,w,h)
context.beginPath()
for(var i=0; i<count;i++){
var snow = snows[i];// iterate through each snowflake
context.fillStyle ="rgb(255,255,255)" //Set the style of the snowflakes
context.shadowBlur=10;
context.shadowColor="rgb(255,255,255)";
//moveTo method is able to move to the specified coordinates
context.moveTo(snow.x,snow.y)
// use canvas arc() to create a circle
// x, y, r: x and y coordinates of the center of the circle, r is the radius
// 0,Math.PI * 2 start and end radians
context.arc(snow.x,snow.y,snow.r,0,Math.PI * 2)
}
// Canvas fill
context.fill()
move()
}
//Snowflakes moving
function move(){
for (var i=0;i<count;i++){
var snow =snows[i];
snow.y +=(7-snow.r)/10 //from top to bottom
snow.x +=((5-snow.r)/10)//Fall from left to right
if(snow.y>h){
snows[i]={
x:Math.random()*w,
y:Math.random()*h,
r:Math.random()*5,
}
}
}
}
draw()
//refresh every millisecond
setInterval(draw,1)
</script>
</body>
</html>
概要
雪の結晶フローティング効果のサンプルコードを達成するためにキャンバスの使用に関するこの記事は、このに導入され、より関連するキャンバス雪の結晶フローティングコンテンツは、以前の記事のスクリプトのホームを検索したり、次の関連記事を閲覧し続け、私はあなたが将来的には、スクリプトの家をよりサポートすることを願ってください!.
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
HTML5ページオーディオの自動再生実装
-
画像のウォーターフォールレイアウトを実現するHTML+CSS+JSのサンプルコード
-
Html5は、エンタープライズWeChatの実装を呼び出す
-
フロントエンドのHtml5でスクリーンショットを共有する方法のサンプルコード
-
ログイン期限切れでIframフレームワークから飛び出す方法を説明する
-
html5動画の共通APIインタフェースの実例を紹介
-
iPhoneXのためのHtml5ページ適応(簡単なことです)
-
プリントイメージ機能のフロントエンド実装
-
モバイルでiframeを拡大縮小するサンプルコード
-
ベッセル曲線の軌跡アニメーションのためのCanvasサンプルコード