ブログに戻る

純粋なバニラJavaScriptでドラッグ&ドロップ要素を作成する

純粋なバニラJavaScriptでドラッグ&ドロップ要素を作成する

JavaScriptは、24以上のフレームワークと約84のライブラリを備えた、最も人気のあるプログラミング言語の1つです。すべてのブラウザで本質的にサポートされている唯一のプログラミング言語です。さらに、この言語は動的型付けをサポートしており、レンダリングやアニメーションに最適です。JavaScriptを活用して、フロントエンドにインタラクティブな動作を追加したり、バックエンドを制御したり、Webやモバイルアプリケーションを作成したりできます。あらゆるWebサイトにエフェクトを追加してカスタマイズ可能にするオプションにより、この言語は世界中の開発者の間で人気を集めています。

このガイドでは、純粋なバニラJavaScriptを使用してドラッグ&ドロップ要素を作成する手順を説明します。さらに、一歩進んで、HTML ドラッグ&ドロップ APIイベントハンドラーを使用した「モーニングスケジューラー」アプリを構築します。

前提条件

このチュートリアルを進めるには、以下が必要です。

  • JavaScriptの基本知識。
  • また、HTMLCSS の知識があると非常に有利です。

ステップ1:新しいプロジェクトの作成

まず、2つの子要素を持つコンテナを作成します。最初の子要素をドラッグ用に使用し、2番目の子要素をドラッグされた要素を格納するために使用します。

注意: このチュートリアルでは、コンテナをドラッグされたすべての要素を保持するストアとして扱います。簡単に言うと、最初の子要素からドラッグされたすべての要素が2番目の子要素にドロップされます。

次に、 cd コマンドを使用して、ディレクトリを drag-and-drop-demo  フォルダに変更します:

ステップ2:初期セットアップ

このチュートリアルでは、HTML、CSS、JavaScriptファイルを作成して接続します。まず、ファイル名をそれぞれ index.html, styles.css、および scripts.js ファイルとします。

次に、「My Morning Planner」 というタイトルを index.html ファイルに追加します:

次に、CSSをリンクし、JavaScriptをHTMLに追加します:

Now, we will create an initial container and add the element we want to drag and drop. Make sure to set the attribute draggable="true"に設定し、ドラッグまたはドロップしたいアイテムのリストを追加してください。

次に、以下のコード行を <body>タグ内に追加します:

保存して、 index.htmlファイルを閉じます。その後、ブラウザで index.htmlファイルを開いてみると、ページが表示されます:

次に、 index.htmlのスタイルをCSSで設定し、見栄えを良くしましょう。

ステップ 3: CSSを使用したスタイリング

次に、 index.htmlファイルに含めたすべての要素にスタイルを追加します:

ブラウザで index.htmlファイルを開いて、出力を確認してください:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

構造化を完了し、スタイルを追加しましたが、要素はまだ静的です。つまり、動的な機能を追加するまでは、要素を移動したりスクロールしたりすることはできません。次のステップでは、JavaScriptを導入して動的な動作を追加します。

ステップ 4: JavaScriptの導入

このステップでは、JavaScriptを導入し、すべてのドラッグ要素を機能させます。JSファイルで、必要となる要素を設定します。まずは以下を定義しましょう。 draggablecontainers を定義して、それぞれ要素をドラッグ&ドロップできるようにします。

次の2行のコードを scripts.js ファイルに追加します:

次に、すべてのイベントリスナーを設定します。まずは dragstart 要素を最初のイベントリスナーとして追加し、クラスリストを add します。同様に、 dragend 要素を2番目のイベントリスナーとして追加し、クラスリストを remove します。

次の EventListenersscripts.js ファイルに貼り付けます:

次に、要素をホバーして移動させるための dragover EventListener を追加します。 draggable 要素を querySelector を使用して設定し、そのドラッグ可能な要素を現在のコンテナに追加します:

デフォルトでは、要素内へのドロップは無効になっています。 e.preventDefault を使用して有効にします:

次に、マウスの位置を特定するための要素を作成します。まずは、2つのパラメータを受け取る関数 getDragAfterElement を作成することから始めましょう。最初のパラメータは container で、2番目のパラメータ y はマウスの縦方向の位置を処理します。次に、 querySelectorAll 関数を使用して、ドラッグ可能な要素を取得します。コンテナ内のすべてのドラッグ可能な要素に対して draggableElements を定義します:

次に、 reduce 関数を呼び出し、ドラッグ可能な要素のリストをループ処理して、マウスクソールの後ろにある単一の要素を特定します。次に、最初の要素を return します。その際、最初の要素を closest 、2番目の要素を child とします。また、 offset を算出し、条件を追加します。

次のコード行を scripts.jsファイルに追加します:

最後のパートでは、条件を設定し、 AfterElementsをチェックします。 AfterElementsを、 if-else条件を使用してチェックし、もしそれが nullに設定されている場合は、 appendChildを使用してリストの最後に子要素を追加します。そうでない場合は、要素 draggableafterElementをパラメータとして insertBefore 関数に追加します。

これを次の scripts.js ファイルに含めます:

これで必要なセットアップが完了しました。ブラウザを開いて、 index.htmlを実行します。ブラウザに「“My Morning Scheduler”」ページが表示され、ドラッグ&ドロップのオプションが利用できます。中央の白い線は、すでに完了したタスクとこれから行うタスクを区別する境界線として機能します:

まとめ

ドラッグ&ドロップは、現代のウェブサイトで使用するのに優れた機能です。このガイドでは、初心者向けにチュートリアルをわかりやすくするため、いくつかのイベントハンドラーを使用しました。イベントハンドラーは全部で8つあり、学習が進むにつれてそれらを使用してみることをお勧めします。このチュートリアルで使用した関数やコードの扱いに慣れたら、次のようなJavaScriptのトピックをさらに深く掘り下げることができます:jQuery。また、学んだ概念を使って、To-Doアプリや、JavaScriptの日付と時刻の機能を使用した週間の進捗トラッカー、その他のアプリケーションの作成に挑戦することもできます。

JavaScriptやウェブ開発のトピックについてさらに詳しく学ぶには、当ブログのこれらのリソースを確認してください::

快適なコンピューティングを!

author

Shreyas Patil

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。