JavaScriptモーションフレームワークコード
数日遅れてしまいました、ごめんなさい!
JavaScript モーション フレームワークのコードの最適化を続けます。
前のコードにはバグがあり、繰り返しクリックすると速度が上がります。では、このバグを解決するにはどうすればよいでしょうか。
それでは、実際に非常に簡単に解決しましょう。
エクササイズを開始するときに、既存のタイマーを閉じます。
1. 各オブジェクトに個別にタイマーを追加します
2. マウスが内側に移動すると、幅は 800 に増加します。マウスが外側に移動すると、幅は元の幅までゆっくりと減少します
具体的なコードは次のとおりです。 script type="text /javascript">
window.onload = function(){
var oDiv = document.getElementsByTagName('p');
var timer;
function getStyle(obj,name){
//currentStyle:現在のスタイル
if (obj.currentStyle){
return obj.currentStyle[name];//Google および Firefox と互換性がありません
}else{
//getComputedStyle: 計算されたスタイル
return getComputedStyle(obj,false)[name]; //IE8 とは互換性がありません--
}
}
function move(obj,name,target,dur,fn){
clearInterval(obj.timer);
var count = parseInt(dur/30);//総数回
var start = parseFloat(getStyle(obj,name));//スタートからの距離
var dis = target - start;//距離
// ステップサイズ
var step = dis/count;
var n = 0 ;//現在のステップ数
obj.timer = setInterval(function(){
n++;
obj.style[name] = start+ n*step +'px';
if(n == count){
clearInterval( obj.timer)
fn && fn();
}
},30)
}
for(var i=0;i
move(this,'width ',800,1000)
}
oDiv[i].onmouseout = function(){
move(this,'width',30,1000)
}
}
}
script>
開始位置と終了位置はランダムで、複数の値を渡すにはJSONを使用します。
実装のアイデア: 1. 2 つの仮パラメータの名前とターゲットを json に変更します
2. 次に、for in ループを使用します。プロパティと値を反復処理します。
move() 関数に開始位置と距離を入力します。代わりに json を使用してください
var start = {};
var dis = {};
for(json の var name){
start[name] = parseFloat(getStyle(obj,name));
dis[name] = json[name] - start[名前];
}
運動するとき、速度と動作曲線があります。これをどのように書くか?
判定条件を書いてパラメータイージングを渡すと、その条件を満たすと対応する速度になります。
obj.timer = setInterval(function(){
n++;
for(json の変数名){
var a = n/count;
switch(easing){
case 'linear':
var cur = start[name ] + a*dis[名前];
ブレーク;
case 'ease-in':
var cur = start[name] + Math.pow(a,3)*dis[名前];
ブレーク;
case 'ease -out':
var a = 1-n/count;
var cur = start[name] + (1-Math.pow(a,3))*dis[name];
Break;
}
if(name == 'opacity'){
obj.style[name] = cur;
obj.style.filter = 'alpha('+cur*100+')';
}else{
obj.style[name] ] = cur +'px';
}
}
もちろんデフォルトのものもあれば、設定する必要のないものもあります。これが究極のモーション フレームワークです。 document.getElementsByTagName('p')[0];
var timer;
function getStyle(obj,name){
//currentStyle: 現在のスタイル
if(obj.currentStyle){
return obj.currentStyle [name]; //Google および Firefox とは互換性がありません
}else{
//getComputedStyle: 計算されたスタイル
return getComputedStyle(obj,false)[name];//IE8 とは互換性がありません--
}
}
// complete = dur, easing,fn
function move(obj,json,complete){
clearInterval(obj.timer);
var complete = complete || {};
complete.dur = complete.dur ||
complete.easing = complete.easing || 'ease-out';
var count = parseInt(complete.dur/30);//合計回数
var start = {};//{width:300,height:300 }
var dis = {};
//{width:300,height:300}
for(json の var name){
start[name] = parseFloat(getStyle(obj,name));
dis[name] = json [name] - start[name];
}
var n = 0;//現在のステップ数
obj.timer = setInterval(function(){
n++;
for(json の var name){
var a = n/count;
switch(complete.easing){
case 'linear':
var cur = start[name] + a*dis[name];
Break;
case 'ease-in':
var cur = start [名前] + Math.pow(a,3)*dis[名前];
Break;
case 'ease-out':
var a = 1-n/count;
var cur = start[name] + ( 1 -Math.pow(a,3))*dis[name];
break;
}
if(name == 'opacity'){
obj.style[name] = cur;
obj.style . filter = 'alpha('+cur*100+')';
}else{
obj.style[name] = cur +'px';
}
}
if(n == count){
clearInterval ( obj.timer)
complete.fn && complete.fn();
}
},30)
}
oDiv.onmouseover = function(){
move(this,{width:300,height:300} , {dur:3000,easing:'ease-in'})
}
oDiv.onmouseout = function(){
move(this,{width:50,height:50},{dur:3000,fn:function( ) {
move(oDiv,{opacity:0})
}})
}
}
以上がJavaScriptモーションフレームワークコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

明確で包括的なドキュメントを作成することは、Golang フレームワークにとって非常に重要です。ベスト プラクティスには、Google の Go コーディング スタイル ガイドなど、確立されたドキュメント スタイルに従うことが含まれます。見出し、小見出し、リストなどの明確な組織構造を使用し、ナビゲーションを提供します。スタート ガイド、API リファレンス、概念など、包括的で正確な情報を提供します。コード例を使用して、概念と使用法を説明します。ドキュメントを常に最新の状態に保ち、変更を追跡し、新機能を文書化します。 GitHub の問題やフォーラムなどのサポートとコミュニティ リソースを提供します。 API ドキュメントなどの実践的なサンプルを作成します。

空飛ぶカメラのパイオニアである Zero Zero Technology は、ハーバード空飛ぶカメラ X1PRO および X1PROMAX の発売を発表し、北京時間 8 月 27 日の早朝に Indiegogo でクラウドファンディングを開始し、オンラインになってから 145 分以内にクラウドファンディングの金額が 1 件を超えました。 100万米ドルを達成し、初の空飛ぶカメラの新記録を樹立した。世界初かつ最先端のフライング アクション カメラとして、これら 2 つの製品はフライング撮影体験を再定義し、スポーツ愛好家やプロのコンテンツ クリエーターに特に適しています。 Hafu フライング カメラ X1PRO および X1PROMAX は持ち運び可能で折りたたみ可能なため、リモコンによるインタラクティブな体験が不要になります。 X1PROMAX: 1/1.3 インチ CMOS センサー、カスタマイズされた 7 層レンズ。 8Kビデオ、14ストップのダイナミックレンジ、107°の広角視野。カスタマイズ可能なNDフィルター。 ×

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

Go フレームワーク開発における一般的な課題とその解決策は次のとおりです。 エラー処理: 管理にはエラー パッケージを使用し、エラーを一元的に処理するにはミドルウェアを使用します。認証と認可: サードパーティのライブラリを統合し、資格情報を確認するためのカスタム ミドルウェアを作成します。同時処理: ゴルーチン、ミューテックス、チャネルを使用してリソース アクセスを制御します。単体テスト: 分離のために getest パッケージ、モック、スタブを使用し、十分性を確保するためにコード カバレッジ ツールを使用します。デプロイメントとモニタリング: Docker コンテナを使用してデプロイメントをパッケージ化し、データのバックアップをセットアップし、ログ記録およびモニタリング ツールでパフォーマンスとエラーを追跡します。
