検索
ホームページウェブフロントエンドhtmlチュートリアルcss3 と Canvas_html/css_WEB-ITnose で実装されたハニカム アニメーション効果

私は最近、仕事で CSS3 アニメーションと JS アニメーションを勉強しました。主に仕事中のページの面白さを高めるために、誰もが意図的または意図せずに多くのアニメーション効果を追加しました。もちろん、それらのほとんどは CSS3 アニメーション効果です。これにより、モバイル端末のパフォーマンス要件が軽減されます。

今日は主にハニカム効果について説明します。特定の効果のソース コードは後で実行できるので、ここには gif は含めません。

css3の原理は非常に簡単で、background-sizeを変更するだけで、css3では背景にrepeat属性を設定できるので、背景画像をx,y方向に並べて表示することができます。最初に、backg-size: 10%、10% を設定します (この値は自由に定義できますが、大きすぎても問題ありません。そうしないと、効果が明確になりません)。最後に、backg-size: 100%、100 を変更します。 %; これにより、背景が画面全体に表示されます。ちなみに、background-position: 50% 50% を設定することを忘れないでください。そうしないと、背景がタイル状になってしまいます。画像は中心点に配置され、システムのデフォルトでは左上隅にタイル表示されます。次に、アニメーションを呼び出すようにアニメーションを設定することでこの効果を実現できます

<pre name="code" class="html">.honey {			position: absolute;			top: 0;			left: 0;			height: 100%;			width: 100%;			background: url(2.jpg) repeat;			background-size: 30% 30%;			background-position: center center;			-webkit-animation: honeycomb 3s 1 linear;		}				@-webkit-keyframes honeycomb {			0% {				background-size: 10% 10%;			}			100% {				background-size: 100% 100%;			}		}

このハニカム アニメーション効果を実現するには css3 を使用します。原理は単純で、効果は完璧ですが、唯一の不完全さは、一部のモバイルに存在する可能性があることです。電話機には互換性がありません。アニメーションの背景サイズを変更すると、この動作はまれですが、ブラウザのリフローは発生しませんが、ブラウザのローカルでの再描画も発生します。

キャンバスを使用してそれを実現することについては、私にとってはまったく退屈な方法なので、キャンバスを使用して描画することはお勧めしませんが、キャンバスアニメーションに興味がある場合は、お金を払うことができます。次のキャンバスの実装計画に注意してください。キャンバス描画の原理は非常に簡単で、幅と高さのパーセンテージを渡すことで、合計で描画する必要がある長方形の数と、各長方形の中心点の座標を計算できます。このコードをモジュールにカプセル化しました。ステップバイステップで読むことができます。まず、オブジェクトを定義します

次に、このオブジェクトのデフォルトの描画イメージを左上から定義します。コーナーは描画を開始するため、中心点から描画するメソッドを自分で記述する必要があります。これは、プロトタイプを通じて属性に追加できます

var Honey = function (options) {				for (var i in options) {			if (options.hasOwnProperty(i)) {				this[i] = options[i];			}		}		this.canvas = this.canvasId || document.getElementById(this.canvasId) || document.getElementById('#canvas');		this.ctx = this.canvas.getContext('2d');		this.canvasWidth = document.body.getBoundingClientRect().width;		this.canvasHeight = document.body.getBoundingClientRect().height;		this.canvas.width = this.canvasWidth;		this.canvas.height = this.canvasHeight;		this.stopped = true;		this.width = options['width'] || 10;		this.height = options['height'] || 10;		this.dwidth = options['dwidth'] || 1;		this.dheight = options['dheight'] || 1;		this.img = options.img;		/*if (!options.img) {			console.log('没有传入图片地址');		}*/	};


このメソッドは非常に簡単で、半分だけオフセットするだけです。幅と高さを指定してから、キャンバスのデフォルトの描画関数を呼び出します

次のメソッドは、描画する必要がある四角形の中心点の位置を取得することです。まずコードを見てみましょう:

drawImage : function (x, y, w, h) {			var width = w * this.canvasWidth / 100,				height = h * this.canvasHeight / 100;			var top = y - height / 2,				left = x - width / 2;			var self = this;			// var img = self.img;			// img.onload = function () {				self.ctx.drawImage(self.img, left, top, width, height);			// }		},
numW と numH はそれぞれ、キャンバスの中心点 50、50 から始まることがわかります。ここで、確実に切り上げるために Math.ceil が使用されていることに注意してください。キャンバス全体を塗りつぶすことができ、x = 50 + width * i; は、x 方向の幅を引いた値が中心点の左側の x 値に等しいことを表します。これは y 方向にも当てはまります。最後に、この関数はすべての座標点を含む配列を返します。次のステップでは、この配列と上記の描画メソッドを使用して、すべての画像を 1 つずつ描画します。

完全なモジュールのソース コードは次のとおりです:

		// 获取所有显示小图片的中心点位置		getPoints : function (width, height) {			// var width = parseInt(w), height = parseInt(h);			var numW = Math.ceil(100 / width), numH = Math.ceil(100 / height);			var result = [];			for (var i = -Math.ceil(numW * 0.5); i  ここでは、一般的な setTimeout の代わりに requestAnimatioFrame が使用されています。具体的な理由はおそらく Google です。キャンバスを使用して描画すると、パフォーマンスの消費が高くなりますが、キャンバス アニメーションを作成する場合は、そのようなアニメーション効果を追加することを検討してください。  <p></p>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLドキュメントのルートタグは何ですか?HTMLドキュメントのルートタグは何ですか?Apr 29, 2025 am 12:10 AM

Theroottaginanhtmldocumentis.itservesStop-levellementThateChationCothercontent、ProperDocumentsTurcuteRuctureAndBrowsingを保証します。

HTMLタグと要素は同じものですか?HTMLタグと要素は同じものですか?Apr 28, 2025 pm 05:44 PM

この記事では、HTMLタグは要素を定義するために使用される構文マーカーであり、要素はタグやコンテンツを含む完全なユニットであると説明しています。彼らは協力してWebPages.Characterカウントを構築するために協力します:159

&lt; head&gt;の重要性は何ですかおよび&lt; body&gt; HTMLのタグ?&lt; head&gt;の重要性は何ですかおよび&lt; body&gt; HTMLのタグ?Apr 28, 2025 pm 05:43 PM

この記事では、&lt; head&gt;の役割について説明します。および&lt; body&gt; HTMLのタグ、ユーザーエクスペリエンスへの影響、およびSEOの影響。適切な構造化により、ウェブサイトの機能と検索エンジンの最適化が強化されます。

&lt; strong&gt;&lt; b&gt;の違いは何ですかタグと&lt; em&gt;&lt; i&gt;タグ?&lt; strong&gt;&lt; b&gt;の違いは何ですかタグと&lt; em&gt;&lt; i&gt;タグ?Apr 28, 2025 pm 05:42 PM

この記事では、HTMLタグの違いについて説明します。、、、、、、、およびプレゼンテーションの使用とSEOとアクセシビリティへの影響に焦点を当てています。

HTMLのドキュメントで使用されている文字セットを示す方法を説明してください。HTMLのドキュメントで使用されている文字セットを示す方法を説明してください。Apr 28, 2025 pm 05:41 PM

記事では、UTF-8に焦点を当てたHTMLでのキャラクターエンコーディングの指定について説明します。主な問題:テキストの正しい表示を確保し、文字化けされたキャラクターの防止、SEOとアクセシビリティの強化。

HTMLのさまざまなフォーマットタグは何ですか?HTMLのさまざまなフォーマットタグは何ですか?Apr 28, 2025 pm 05:39 PM

この記事では、Webコンテンツの構築とスタイリングに使用されるさまざまなHTMLフォーマットタグについて説明し、テキストの外観に対する影響とアクセシビリティとSEOのセマンティックタグの重要性を強調しています。

「ID」属性とHTML要素の「クラス」属性の違いは何ですか?「ID」属性とHTML要素の「クラス」属性の違いは何ですか?Apr 28, 2025 pm 05:39 PM

この記事では、HTMLの「ID」属性と「クラス」属性の違いについて説明し、一意性、目的、CSS構文、および特異性に焦点を当てています。それらがWebページのスタイリングと機能にどのように影響するかを説明し、のベストプラクティスを提供する

HTMLの「クラス」属性とは何ですか?HTMLの「クラス」属性とは何ですか?Apr 28, 2025 pm 05:37 PM

この記事では、スタイリングとJavaScriptの操作の要素をグループ化するHTML「クラス」属性の役割を説明し、一意の「ID」属性とは対照的です。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン