検索
ホームページウェブフロントエンドCSSチュートリアルHTML、CSS、JavaScript を使用したドラッグ可能な要素の作成

現代の Web 開発では、インタラクティブ性がユーザーを惹きつけ、動的なユーザー エクスペリエンスを生み出す鍵となります。インタラクティブ性を追加する 1 つの方法は、要素をドラッグ可能にすることです。この投稿では、HTML、CSS、JavaScript を使用してドラッグ可能な要素を作成する方法を検討します。

出力:

Creating a Draggable Element Using HTML, CSS, and JavaScript

HTML 構造
基本的な HTML 構造から始めましょう。ドラッグ可能にする単純な div 要素を作成します。コードは次のとおりです:



<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable Element</title>
<link rel="stylesheet" href="styles.css">


<div class="draggable" id="draggableElement">Drag me!</div>
<script src="script.js"></script>



このコードには、draggable クラスと、draggableElement の ID を持つ div があります。これがドラッグ可能にする要素になります。

CSS を使用したドラッグ可能な要素のスタイル設定

.draggable {
    position: absolute;
    cursor: grab;
    width: 100px;
    height: 100px;
    background-color: #007bff;
    color: #fff;
    text-align: center;
    line-height: 100px;
    border-radius: 8px;
    user-select: none;
}

.draggable.dragging {
    cursor: grabbing;
}

この CSS では、要素のスタイルを設定するための .draggable クラスを定義します。ページ内で自由に移動できるように、位置を絶対位置に設定します。カーソル プロパティは、要素がドラッグ可能であることを示すために、grab に設定されます。また、幅、高さ、背景色、テキストの色、テキストの配置、およびテキストを垂直方向と水平方向の中央に配置する行の高さを定義します。丸い角には border-radius が追加され、ドラッグ中のテキスト選択を防ぐために user-select: none が使用されます。続きを読む

JavaScript によるインタラクティブ性の追加

let draggableElement = document.getElementById('draggableElement');
let offsetX, offsetY;

draggableElement.addEventListener('mousedown', startDragging);
draggableElement.addEventListener('mouseup', stopDragging);

function startDragging(e) {
    e.preventDefault();
    offsetX = e.clientX - draggableElement.getBoundingClientRect().left;
    offsetY = e.clientY - draggableElement.getBoundingClientRect().top;
    draggableElement.classList.add('dragging');
    document.addEventListener('mousemove', dragElement);
}

function dragElement(e) {
    e.preventDefault();
    let x = e.clientX - offsetX;
    let y = e.clientY - offsetY;
    draggableElement.style.left = x + 'px';
    draggableElement.style.top = y + 'px';
}

function stopDragging() {
    draggableElement.classList.remove('dragging');
    document.removeEventListener('mousemove', dragElement);
}

ドラッグ開始: ユーザーが要素上でマウス ボタンを押したときに、startDragging 関数がトリガーされます。この関数:

  1. e.preventDefault() を使用してイベントのデフォルトの動作を防止します。
  2. マウスの位置から要素の左上隅の位置を減算してオフセットを計算します。
  3. カーソルを変更するためのドラッグ クラスを追加します。
  4. mousemove イベントのイベント リスナーをドキュメントに追加します。これにより、dragElement 関数がトリガーされます。

要素のドラッグ: マウスが移動すると、dragElement 関数がトリガーされます。この関数:

  1. イベントのデフォルトの動作を防止します。
  2. マウスの位置とオフセットに基づいて要素の新しい位置を計算します。
  3. 要素の左側と上部の CSS プロパティを更新して、要素を新しい位置に移動します。

ドラッグの停止: stopDragging 関数は、ユーザーがマウス ボタンを放したときにトリガーされます。この関数:

  1. ドラッグ クラスを削除して、カーソルを元の状態に戻します。
  2. ドキュメントからmousemoveイベントリスナーを削除して、ドラッグを停止します。続きを読む

結論:
イベント リスナーと DOM 操作の基本を理解することで、Web プロジェクトに対話性を追加し、ユーザー エクスペリエンスを向上させることができます。

記事全文を読む - ここをクリックしてください

以上がHTML、CSS、JavaScript を使用したドラッグ可能な要素の作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
非常に多くの色のリンク非常に多くの色のリンクApr 13, 2025 am 11:36 AM

最近の色に関するツール、記事、リソースの実行がありました。あなたの楽しみのためにここにそれらを丸くすることで、私がいくつかのタブを閉じてもらいましょう。

FlexBoxでの自動マージンの仕組みFlexBoxでの自動マージンの仕組みApr 13, 2025 am 11:35 AM

ロビンは以前にこれをカバーしたことがありますが、私は過去数週間でそれについての混乱を聞いて、他の人がそれを説明することに刺されたのを見ました、そして私は望んでいました

動く虹色の下線動く虹色の下線Apr 13, 2025 am 11:27 AM

サンドイッチサイトのデザインが大好きです。多くの美しい特徴の中には、これらの見出しがあり、レインボーの下線が下線を描いて、スクロールするときに動きます。そうではありません

新年、新しい仕事?グリッド駆動の履歴書を作成しましょう!新年、新しい仕事?グリッド駆動の履歴書を作成しましょう!Apr 13, 2025 am 11:26 AM

多くの人気のある履歴書設計は、グリッド形状にセクションを配置することにより、利用可能なページスペースを最大限に活用しています。 CSSグリッドを使用して、レイアウトを作成しましょう

リロードしすぎるという習慣からユーザーを分解する1つの方法リロードしすぎるという習慣からユーザーを分解する1つの方法Apr 13, 2025 am 11:25 AM

ページのリロードは何かです。ページが反応しないと思われるとき、または新しいコンテンツが利用可能であると信じるときにページを更新することもあります。時々私たちはただ怒っています

Reactを使用したドメイン駆動型のデザインReactを使用したドメイン駆動型のデザインApr 13, 2025 am 11:22 AM

Reactの世界でフロントエンドアプリケーションを整理する方法に関するガイダンスはほとんどありません。 (「正しいと感じる」までファイルを移動するだけです笑)。真実

非アクティブユーザーの検出非アクティブユーザーの検出Apr 13, 2025 am 11:08 AM

ほとんどの場合、ユーザーがアプリケーションに積極的に関与しているのか、一時的に非アクティブであるかを本当に気にしません。非アクティブ、意味、おそらく彼ら

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufooは常に統合に優れています。キャンペーンモニター、MailChimp、TypeKitなどの特定のアプリと統合されていますが、

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

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

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

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境