HTML5 マグマ アニメーションの背景効果
<!doctype html>
<html>
<頭>
<メタ文字セット="utf-8">
<title>設置可能なアニメーション 画のプロパティの HTML5 岩浆アニメーション背景特色</title>
<スタイル>
@charset "UTF-8";
*、 *:ビフォアーアフター {###
ボックスのサイズ設定: ボーダーボックス;
}
体 {###
パディング: 0;
マージン: 0;
オーバーフロー: 非表示;
フォントファミリー: 'Roboto'、サンセリフ;
}
キャンバス {###
幅: 100vw;
高さ: 100vh;
}
h1 {
位置: 絶対;
z インデックス: 1;
幅: 100%;
左: 0;
トップ: 50%;
-webkit-transform: 翻訳Y(-50%);
変換:translateY(-50%);
ミックスブレンドモード: オーバーレイ;
色: rgba(0, 0, 0, 0.3);
行の高さ: 0;
フォントサイズ: 16px;
文字間隔: 4px;
テキスト整列: 中央;
テキスト変換: 大文字;
変換:translateY(-50%);
カーソル: ポインタ;
-webkit-transition: カラー .2s イーズインアウト;
トランジション: カラー .2s イーズインアウト;
-webkit-user-select: なし;
-moz-user-select: なし;
-ms-user-select: なし;
ユーザー選択: なし;
}
h1:ホバー {
色: rgba(0, 0, 0, 0.8);
}
</style>
</head>
<本文>
<スクリプト src="js/chroma.min.js"></script>
<スクリプト src="js/dat.gui.min.js"></script>
<canvas id="canvas"></canvas>
<h1>床は溶岩です</h1>
<スクリプト>
'厳密を使用';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("クラスを関数として呼び出すことはできません"); } }
変数設定 = {
振幅X: 150,
振幅Y: 20,
行数: 30,
開始カラー: '#500c44',
終了色: '#b4d455'
};
var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
var winW = window.innerWidth;
var winH = window.innerHeight;
var パス = [];
var color = [];
var マウス Y = 0;
varmouseDown = false;
var 時間 = 0;
var カーブ = 未定義;
var 速度 = 未定義;
var パス = 関数 () {
関数パス(y, color) {
_classCallCheck(this, パス);
this.y = y;
this.color = color;
this.root = [];
this.create();
this.draw();
}
Path.prototype.create = function create() {
var rootX = 0;
var rootY = this.y;
this.root = [{ x: rootX, y: rootY }];
while (rootX
var x = parseInt(settings.amplitudeX / 2 Math.random() * settings.amplitudeX / 2);
var y = parseInt(rootY カジュアル * (settings.amplitudeY / 2 Math.random() * settings.amplitudeY / 2));
rootX = x;
var 遅延 = Math.random() * 100;
this.root.push({ x: rootX, y: y, height: rootY, カジュアル: カジュアル, 遅延: 遅延 });
}
};
Path.prototype.draw = 関数draw() {
ctx.beginPath();
ctx.moveTo(0, winH);
ctx.lineTo(this.root[0].x, this.root[0].y);
for (var i = 1; i
var x = this.root[i].x;
var y = this.root[i].y;
var nextX = this.root[i 1].x;
var nextY = this.root[i 1].y;
var xMid = (x nextX) / 2;
var yMid = (y nextY) / 2;
var cpX1 = (xMid x) / 2;
var cpY1 = (yMid y) / 2;
var cpX2 = (xMid nextX) / 2;
var cpY2 = (yMid nextY) / 2;
ctx.quadraticCurveTo(cpX1, y, xMid, yMid);
ctx.quadraticCurveTo(cpX2, nextY, nextX, nextY);
}
var lastPoint = this.root.reverse()[0];
this.root.reverse();
ctx.lineTo(lastPoint.x, lastPoint.y);
ctx.lineTo(winW, winH);
ctx.fillStyle = this.color;
ctx.fill();
ctx.closePath();
};
復路;###
}();
/* 初期化 */###
var パス = 未定義;
関数 init() {
c.width = winW;
c.height = winH;
パス = [];
color = chroma.scale([settings.startColor, settings.endColor]).mode('lch').colors(settings.lines);
document.body.style = 'background: ' settings.startColor;
for (var i = 0; i
settings.startY = winH / settings.lines * i;
}
}
/* サイズ変更に成功 */
window.addEventListener('resize', function () {
winW = window.innerWidth;
winH = window.innerHeight;
c.width = winW;
c.height = winH;
初期化();###
});
window.dispatchEvent(new Event("resize"));
/* 与える */###
関数 render() {
c.width = winW;
c.height = winH;
カーブ = マウスダウン ? 2 : 4;
速度 = マウスダウン ? 6 : 0.8;
時間 = マウスダウン ? 0.1 : 0.05;
Paths.forEach(関数 (パス, i) {
path.root.forEach(関数 (r, j) {
if (j % 曲線 == 1) {
var move = Math.sin(時間 r.遅延) * 速度 * r.casual;
r.y -= 移動 / 2 - 移動;
}
if (j 1 % 曲線 == 0) {
var move = Math.sin(時間 r.遅延) * 速度 * r.casual;
r.x = 移動 / 2 - 移動 / 10;
}
});
path.draw();
});
requestAnimationFrame(render);
}
与える();###
/* マウスダウン */
'mousedown touchstart'.split(' ').forEach(function (e) {
document.addEventListener(e, function () {
マウスダウン = true;
});
});
/* マウスアップ */
'mouseup、mouseleave、touchend'.split(' ').forEach(function (e) {
document.addEventListener(e, function () {
マウスダウン = false;
});
});
/* マウスムーブ */
'mousemove touchmove'.split(' ').forEach(function (e) {
document.addEventListener(e, function (e) {
マウス Y = e.clientY || e.touches[0].clientY;
});
});
/* データ GUI */
var gui = 関数 datgui() {
var gui = 新しい dat.GUI();
// dat.GUI.toggleHide();
gui.closed = true;
gui.add(設定, "振幅X", 40, 200).step(20).onChange(function (newValue) {
初期化();###
});
gui.add(設定, "振幅Y", 0, 100).step(1).onChange(function (newValue) {
初期化();###
});
gui.add(設定, "行", 5, 50).step(1).onChange(function (newValue) {
初期化();###
});
gui.addColor(settings, "startColor").onChange(function (newValue) {
初期化();###
document.querySelector('h1').innerHTML = 'または任意のもの';
});
gui.addColor(設定, "endColor").onChange(function (newValue) {
初期化();###
document.querySelector('h1').innerHTML = 'または任意のもの';
});
GUI を返す;
}();
</スクリプト>
</本文>
</html>
このサイトのすべてのリソースはネチズンによって提供されたもの、または主要なダウンロード サイトによって転載されたものです。ソフトウェアの整合性をご自身で確認してください。このサイトのすべてのリソースは学習の参考のみを目的としています。商業目的で使用しないでください。そうでない場合は、すべての結果に対して責任を負うことになります。侵害がある場合は、削除するためにご連絡ください。連絡先情報: admin@php.cn
関連記事
25 Oct 2024
CSS のみで境界半径と透明な背景を使用して円をアニメーション化する問題:アニメーション化された境界半径の円を作成する方法...
18 Oct 2024
効果的な HTML 特殊文字の削除:strip_tags を超えた拡張strip_tags は HTML タグを効果的に削除しますが、HTML 特殊文字コードが残る可能性があります。 「 」や「©」などのコードは、RSS フィード ファイルの保存を中断する可能性があります。
24 Dec 2024
に背景を適用する および/または または 要素に背景を適用するときに、次のことに気づくかもしれません...
27 Nov 2024
特定のボタンのマウス ホバー効果を無効にする CSSAiming を使用して、Web ページ内の特定のボタンのマウス ホバー効果を無効にすると、...
18 Oct 2024
文字列から HTML 特殊文字を削除する RSS フィードを作成するときは、互換性を確保するために HTML タグと特殊文字を削除することが重要です。 strip_tags() はタグを効果的に削除しますが、多くの場合、HTML 特殊文字が残ります。
28 Oct 2024
CSS: Backdrop-Filter 要素の背景にぼかしやその他の効果を有効にする CSS 機能である PolyfillBackdrop-filter は、ほとんど残っています...
03 Dec 2024
部分的なテンプレート特殊化での「不完全な型の無効な使用」エラーテンプレート関数の部分的な特殊化を作成しようとすると...
14 Dec 2024
マウスオーバーで jQuery を使用して背景色の変化をアニメーション化する方法背景色の変化に対して jQuery アニメーションを実装しようとすると...
ホットツール Tags
Hot Tools
HTML5 キャンバスの心ときめくアニメーション特殊効果
HTML5 キャンバスのハートのはためきアニメーション特殊効果は、ブラウザで直接開いてハートを確認できる生成されたアニメーションです。
H5 パンダバウンスゲームのソースコード
HTML5 Mobile Panda もクレイジーなゲームのソース コードです。ゲームの説明: 画面を長押ししてパンダのバネの強さを調整し、石柱にジャンプします。川に落ちたらゲーム終了です。
HTML5 バレンタインデー ボックス アニメーションの特殊効果
svgをベースに、バレンタインデーのラブボックスギフトを開けるアニメーションと、ラブボックスアニメーションの特殊効果を描画します。
H5 3D ローリング ボール ゲームのソース コード
HTML5 クールな 3D ボールローリングモバイルゲームコードのダウンロード。ゲーム紹介: カラー ボールが転がり、マウスまたは携帯電話のタッチ スクリーンでカラー ボールをドラッグすることで、カラー ボールの現在のトラックを制御します。シンプルで操作しやすいモバイルゲームのソースコードです。