0Pricing
HTML Academy · Ders

draggable Özniteliği ve dragstart Olayı

Öğeleri sürüklenebilir hâle getirin ve dragstart olayına yanıt verin

draggable Özniteliği ve dragstart Olayı, CoddyKit'te ücretsiz bir HTML Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, HTML Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. HTML Academy kursu toplamda 4 dersten oluşur.

Sürüklenebilir Özniteliği

draggable="true" ayarlandığında herhangi bir öğe sürükleme kaynağı hâline gelir. Bağlantılar ve görüntüler varsayılan olarak sürüklenebilir; diğer her şey (div, li ve span öğeleri) için bu özniteliğin açıkça belirtilmesi gerekir. draggable="false" ise bir öğeyi yerel sürükleme işleminin dışında bırakır.

<div draggable="true" id="card">Drag me</div>

Sürükleme Başlangıcı Olayı

Kullanıcı sürüklemeyi başlattığında kaynak öğe, sürükleme başlangıcı olayını tetikler. Sürüklemeyi burada başlatırsınız: hangi öğenin taşındığını kaydedin, isteğe bağlı olarak öğeye stil uygulayın ve bırakma hedefinin okuyacağı verileri dataTransfer nesnesine yazın.

card.addEventListener("dragstart", (e) => {
  e.dataTransfer.setData("text/plain", card.id);
});

Sürükleme Başlangıcı Olmadan Hiçbir Şey Olmaz

Bir öğeyi sürüklenebilir olarak işaretleyip sürükleme başlangıcını hiç işlemezseniz tarayıcı yine de bir hayalet görüntüyü sürükler; ancak hiçbir veri ayarlanmadığı için çoğu bırakma hedefi bırakma işlemini reddeder. Sürüklenebilir özniteliğini her zaman, en azından bir tanımlayıcı saklayan bir sürükleme başlangıcı dinleyicisiyle birlikte kullanın.

effectAllowed Ayarlama

e.dataTransfer.effectAllowed = "move" ifadesi, sürükleme başlangıcında işlemi sınırlar: "copy", "move", "link", "copyMove", "all" veya "none". Bu ayar, tarayıcının gösterdiği imleci ve hedefin daha sonra ayarlayabileceği dropEffect değerini belirler.

Görsel Bir İpucu Ekleme

Kaynak sürüklenirken soluk görünmesi için ona bir CSS sınıfı ekleyin: card.classList.add("dragging"). Stil, bırakma işlemi başarılı olsa da Escape ile iptal edilse de temizlensin diye sınıfı dragend olayında kaldırın.

Özel Sürükleme Görüntüsü

Varsayılan olarak tarayıcı, kaynağın yarı saydam bir anlık görüntüsünü sürükler. e.dataTransfer.setDragImage(node, offsetX, offsetY) ile bunu değiştirin; imlecin yanında özel bir önizleme göstermek için gizli bir DOM öğesi veya bir görüntü aktarın.

const ghost = document.getElementById("drag-preview");
card.addEventListener("dragstart", (e) => {
  e.dataTransfer.setDragImage(ghost, 20, 20);
});

Sürükleme Bitişi Olayı

dragend, sürükleme tamamlandıktan sonra; işlem başarıyla bırakılmış, geçersiz bir hedefe bırakılmış veya iptal edilmiş olsa da kaynak üzerinde tetiklenir. Temizlik için kullanın: sürükleme sınıfını kaldırın, hayalet önizlemeleri gizleyin ve opaklığı geri yükleyin.

İptali Algılama

Sürükleme bitişi içinde e.dataTransfer.dropEffect değerini denetleyin. Değer "none" ise bırakma gerçekleşmemiştir (hedef reddetmiş, kullanıcı Escape tuşuna basmış veya öğe sayfanın dışına bırakılmış olabilir). Aksi durumda değer, bırakma hedefinin seçtiği etkiye ("move", "copy", "link") eşittir.

Dokunmatik Cihazlarda Sürükleme

Yerel sürükle ve bırak desteği masaüstü önceliklidir. Dokunmatik cihazlarda çoklu doldurma veya İşaretçi Olayları tabanlı bir alternatif olmadan API neredeyse çalışmaz. Mobil uyumlu yeniden sıralama arayüzleri için her iki olay modelini de soyutlayan SortableJS veya dnd-kit gibi kitaplıkları tercih edin.

Erişilebilirlik Kaygıları

Yerel sürükle ve bırak klavyeyle erişilebilir değildir; yalnızca klavye kullanan kullanıcılar öğeleri yeniden sıralayamaz. Her zaman bir alternatif sunun: ok tuşu işleyicileri, yukarı taşı/aşağı taşı düğmeleri veya aria ile denetlenen bir yeniden sıralama iletişim kutusu. Sürükle ve bırak, erişilebilirliğin yerini almamalı; onu geliştirmelidir.

Tarayıcı Varsayılanlarını Devre Dışı Bırakma

Sürüklenebilir öğelerin içindeki metin seçimi, sürükleme işlemine müdahale edebilir. Tarayıcının metni seçmek yerine öğeyi sürüklemesi için kaynak üzerinde CSS user-select: none ve -webkit-user-drag: element uygulayın.

Bilgi Kontrolü

draggable="true" özniteliği tek başına bir öğeyi sürüklenebilir hâle getirdiği hâlde neden genellikle bir sürükleme başlangıcı dinleyicisi eklemeniz gerekir?

Özet

Kaynakları draggable="true" ile işaretleyin; dataTransfer verilerini doldurmak, effectAllowed değerini ayarlamak ve isteğe bağlı olarak özel bir sürükleme görüntüsü kullanmak için sürükleme başlangıcı olayını kullanın. Stilleri temizlemek için bunu sürükleme bitişi olayıyla birlikte kullanın. Erişilebilirlik için klavye alternatifleri sağlayın ve dokunmatik kullanım için çoklu doldurmaları değerlendirin.

Sıkça Sorulan Sorular

“draggable Özniteliği ve dragstart Olayı” dersi ücretsiz mi?

Evet — “draggable Özniteliği ve dragstart Olayı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve HTML Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. HTML Academy kursu toplamda 4 dersten oluşur.

“draggable Özniteliği ve dragstart Olayı” dersinde ne öğreneceğim?

Öğeleri sürüklenebilir hâle getirin ve dragstart olayına yanıt verin HTML Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

HTML Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te HTML Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“draggable Özniteliği ve dragstart Olayı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu HTML Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her HTML Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. draggable Özniteliği ve dragstart Olayı
  2. dragover ve drop Olayları
  3. dataTransfer Nesnesi
  4. Uygulamalı Sürükleyerek Yeniden Sıralanabilir Liste
← HTML Academy Sayfasına Dön