検索
ホームページウェブフロントエンドjsチュートリアルJavaScript を使用してドラッグレイアウトを作成するためのアイデア_JavaScript スキル

なぜ!もしくはjsのスキルが低すぎる。情報を探しながら書いたので、あまり印象に残っていない部分も多いです
時間が経つとまた書くのが難しくなりそうなので、その時の感想を記録しておきます!エビさんからもアドバイスをいただければと思います!
それでは、本文に移り、始める前にいくつかの機能を紹介しましょう。
1. イベント関数のフォーマット

コードをコピーします コードは次のとおりです:

function getEvent(){
//IE と FF の両方の書き込みメソッドと互換性があります
if(document.all) return window.event;
func=getEvent.caller; (func !=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent)
|| (typeof(arg0)=="オブジェクト" && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
}
func=func.caller; >}
return null;
}




2. マウスの位置を取得します


コードをコピー コードは次のとおりです: function MouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x: ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY document.body.scrollTop - document.body.clientTop
}




3. >

コードをコピー
コードは次のとおりです: function getPosition(ele){ var left = 0; while (ele.offsetParent){
top = ele.offsetTop; ;
}
left = ele.offsetLeft;
return {x:left, y:top};
まず最初に、初期レイアウト ページを作成し、初期ページの効果を確認します。
通常、ドラッグされた要素はマウスに従います。私のアイデアは、ドラッグされた要素を絶対位置の div に追加することです。 🎜> マウスをドラッグすると移動します。マウスの座標に応じて位置を変更できます。そこで、onload を追加しました




コードをコピー


コードは次のとおりです:

var tmpDiv=null ; // ドラッグしたオブジェクトの div を一時的に保存します
window.onload=function(){
tmpDiv=document.createElement("div");
tmpDiv.style.cssText = 'position:absolute; display: none;border:1px dotted #FFCC66;';
document.body.appendChild(tmpDiv);
コードをコピーします。


varragObject = null;//ドラッグされた要素 (テーブル)
var MouseOffset = null;//ドラッグされた要素内のマウスの位置
varragDiv =null;//ドラッグされたテーブルが配置されている列の div
var eleDivW=null;//ドラッグされたテーブルの親ノード (div) の高さ
varragDivLen=null;//ドラッグされたテーブル 列の div にテーブルを配置するために使用される div の数
var DragContainer=["col1", "col2", "col3"];//列レイアウトの実装に使用される div の ID
/ /マウスを押して要素をドラッグします
function MouseDown(elem){
ev=getEvent();
dragObject = elem.parentNode.parentNode.parentNode;//ドラッグされたテーブル dragDiv =dragObject. parentNode.parentNode; //ドラッグ要素が配置されている列の div の数dragDivLen=dragDiv.getElementsByTagName("div").length mouseOffset = getMouseOffset(dragObject, ev); eleDivW=dragObject.parentNode.offsetWidth; dragObject.parentNode.style.border="1px dotted #FFCC66";
return false
}
// マウスのドラッグ要素の位置を取得します。
関数 getMouseOffset(target, ev){
var docPos = getPosition(target);
var MousePos = MouseCoords(ev);
return {x:mousePos.x - docPos.x , y :mousePos.y - docPos.y};
}


もちろん、ドラッグしているオブジェクトもマウスを動かすことで移動できます。簡単にするために、ドキュメントをバインドします。




コードをコピーします


コードは次のとおりです。

document.onmousemove = MouseMove;
function MouseMove(){
ev=getEvent();
if(dragObject); >dragObject.parentNode.style.display="none";//ドラッグされたテーブルが配置される div を非表示に設定します
//ドラッグされたテーブルを一時 div に配置し、その座標を設定します
for( var i =0; itmpDiv.style.width =eleDivW "px";
tmpDiv.style.backgroundColor="#FFFFFF";
tmpDiv.style.display="block";
tmpDiv.style.top = (mousePos.y - MouseOffset.y) px";
tmpDiv.style.left = (mousePos.x - MouseOffset.x) "px";
}
return false;
}



mousemoveでは当然mouseupが必須です


コードをコピー コードは次のとおりです: document.onmouseup = MouseUp;
//マウス
関数 MouseUp(){
if(dragObject){
if(dragObject.parentNode.style.display=="none") ドラッグオブジェクトを解放します。 parentNode.style .display="block";
dragObject.parentNode.style.border="1px Solid #FFCC66";
tmpDiv.style.display="none";列に何かがある場合要素をドラッグするとき、以前に設定した高さの値 20px をクリアします。
for(var m=0;mvarcolDiv=document.getElementById(DragContainer[m] ]);
varcolDivLen=colDiv.getElementsByTagName("div").length
varcolSty=colDiv.getAttribute("style");
if(colDivLen>&&colSty!=null){
ColDiv.removeAttribute(" style");
break;
}
}



を参照ドラッグできる場合は、マウスの左ボタンを放すと、ドラッグされた要素が元の位置に戻ります。

最後に、ドラッグされた要素が元の位置に戻らないようにします。元の位置に戻ります。
以下は、mousemove イベントのすべてのコードです。理解するにはコメントを参照してください。



コードをコピーします


コードは次のとおりです:

function MouseMove(){
ev=getEvent();
var MousePos = MouseCoords(ev);
if(dragObject){
//ドラッグ可能なオブジェクトの数は 1 で、ドラッグ後にこの列にドラッグ要素がないことを示します。高さがないためにこの列が表示されないようにするには、その高さを 20px に設定します。
if(dragDivLen==1)ragDiv.style .height="20px";
dragObject.parentNode.style.display="none";
//ドラッグされた要素を一時的な tmpDiv に追加し、tmpDiv 座標を設定します。
for(var i=0; itmpDiv.style.width=eleDivW ;
tmpDiv.style.backgroundColor="#FFFFFF";
tmpDiv.style.display="block";
tmpDiv.style.top = (mousePos.y - MouseOffset.y)
tmpDiv .style.left = (mousePos.x - MouseOffset.x) "px";
//ドラッグされたオブジェクトの中心点の座標
varragObjCntX=mousePos.x - MouseOffset.x parseInt (dragObject.offsetWidth )/2;
varragObjCntY=mousePos.y -mouseOffset.y parseInt(dragObject.offsetHeight)/2;
//tmpDiv が配置されている列を判定します
varragConLen=DragContainer。長さ;
for (var i=0;ivar curContainer=document.getElementById(DragContainer[i]);
var dcPos=getPosition(curContainer); dcPosMinX=dcPos.x;
var dcWidth=curContainer.offsetWidth;
var dcPosMaxX=dcPosMinX dcWidth; =dcPosMinY dcHeight;
if(dragObjCntX>dcPosMinX&&dragObjCntXdcPosMinY&&dragObjCntYvar activeContainer=curContainer;
}
}
}
/ /ブロック スコープ内でどの tmpDiv がリストされるかを決定します。
if(activeContainer){
var beforNode=null;
var sDiv=activeContainer.getElementsByTagName("div")
var acChiLen=sDiv.length ;
for(j =acChiLen-1;j>=0;j--){
var activeDiv=sDiv[j];
if(activeDiv){
var activeDivPos=getPosition(activeDiv) );
var activeDivMinX =activeDivPos.y;
var activeDivMaxX=activeDivMinY activeDiv.offsetHeight; ;dragObjCntX&&activeDivMaxY>drag ObjCntY){
//if(dragObjCntX>activeDivMinX&&dragObjCntXactiveDivMinY&&dragObjCntY}
}
}
//Ifこのブロックは存在します、ここにあります ブロックの前にドラッグ要素を挿入します
if(beforNode!=null){
if(dragObject.parentNode!=beforNode){
curContainer.insertBefore(dragObject.parentNode,beforNode) ;
dragObject.parentNode.style.display="block";
//document.getElementById("test").value=curContainer.id;存在しない場合は列に要素をドラッグします
else{
curContainer.appendChild(dragObject.parentNode)
dragObject.parentNode.style.display="block";
return false;
}



レイアウトをドラッグできるページが完成し、最終的なページ効果を表示できます
機能は限られており、一部の場所では明確ではないかもしれません。興味がある場合は、自分でコードをよく見てください。
不備がございましたら、お知らせください。
デモコード:







JavaScript ドラッグ レイアウト






 
  1_2  
     
     
     
     
 
     
  2_1  
     
   
     
 
  2_2  
     
     
     
     
 
     
  2_3  
     
     
     
 
     
     
     
3_1    
     
 
     
     
     
     
    3_2
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists

SecLists

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

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター