You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bunun nedeni, tarayıcının resimler için otomatik olarak çalışan ve bizimkilerle çakışan kendi Sürükle ve Bırak özelliğine ve diğer bazı öğelere sahip olmasıdır.
71
+
Bunun nedeni, tarayıcının resimler için otomatik olarak çalışan ve bizimkilerle çakışan kendi sürükle ve bırak özelliğine ve diğer bazı öğelere sahip olmasıdır.
72
72
73
73
Bunu deve dışarı bırakmak için:
74
74
@@ -86,9 +86,9 @@ In action:
86
86
[iframe src="ball2" height=230]
87
87
```
88
88
89
-
Bir diğer önemli husus - "top" üzerinde değil, "belge" üzerinde `mousemove` yani fare hareketini izliyoruz. İlk bakışta, farenin her zaman topun üstündeymiş gibi olacagını düşünebiliriz ve bu yüzden topun üzerinden de dinleyebiliriz diye düşünebiliriz ( ball.eventLıstener ile).
89
+
Bir diğer önemli husus - "top" üzerinde değil, "belge" üzerinde `mousemove` yani fare hareketini izliyoruz. İlk bakışta, farenin her zaman topun üstündeymiş gibi olacagını düşünebiliriz ve bu yüzden topun üzerinden de dinleyebiliriz diye düşünebiliriz ( ball.eventLıstener ile).
90
90
91
-
Ancak hatırlarsak, `mousemove` sık sık tetiklenmesine rağmen, aynı zamanda bazı pikselleri atlayabilir. Bu yüzden ani bir hareketin ardından, imleç topun üzerinden atlayarak, pencerenin başka bir yerine gidebilir ve hatta pencerenin dışına çıkabilir.
91
+
Ancak hatırlarsak, `mousemove` sık sık tetiklenmesine rağmen, aynı zamanda bazı pikselleri atlayabilir. Bu yüzden ani bir hareketin ardından imleç topun üzerinden atlayarak pencerenin başka bir yerine gidebilir ve hatta pencerenin dışına çıkabilir.
92
92
93
93
Bu yüzden yakalamak için `document` i dinlemeliyiz. (document.eventListener ile)
94
94
@@ -196,7 +196,7 @@ Topu sağ alt köşesinden sürüklediğimizde fark özellikle belirgindir. Önc
196
196
197
197
Ancak bu işe yaramayacak.
198
198
199
-
Problem şu ki, biz elementi alıp sürüklerken, bu element her zaman diğerlerinin üstünde (z-index den ötürü). Ve fare olayları sadece üstteki element üzerinde olur, alttakileri görmez.
199
+
Problem şu ki, biz elementi alıp sürüklerken, bu element her zaman diğerlerinin üstünde (z-index'ten ötürü) ve fare olayları sadece üstteki element üzerinde olur, alttakileri görmez.
200
200
201
201
Örneğin, aşağıda mavinin üzerinde kırmızı olmak üzere iki `<div>` ögesi var. Mavi elementin üzerinde bir fare olayı yakalamak imkansız çünkü üstünde kırmızı element var.
202
202
@@ -213,7 +213,7 @@ Problem şu ki, biz elementi alıp sürüklerken, bu element her zaman diğerler
Aynı durum sürüklediğimiz elementte de geçerli. Top her zaman diğer elementlerin üzerinde olduğu için, fare olayı onun üzerinde gerçekleşir. Örneğin bırakacagımız noktada da fare olayı dinlemek istersek, çalışmayacak.
216
+
Aynı durum sürüklediğimiz element içinde geçerli. Top her zaman diğer elementlerin üzerinde olduğu için, fare olayı onun üzerinde gerçekleşir. Örneğin bırakacagımız noktada da fare olayı dinlemek istersek, işlev çalışmayacaktır.
217
217
218
218
Bu nedenle, olay dinleyicileri potansiyel hedeflere yerleştirme fikri pratikte işe yaramaz.
219
219
@@ -233,12 +233,12 @@ ball.hidden = false;
233
233
234
234
Not: bu z çağırmadan önce topu saklamamız gerekir `(*)`. Yoksa muhtemelen bu koordinatlar topun koordinatları olur, çünkü imlecin göreceği ilk element olacaktır:`elemBelow=ball`.
235
235
236
-
Bu kodu istediğimiz zaman diğer elementlerin "üzerinden geçip geçmediğimizi" kontrol etmek için kullanabiliriz. Ve gerçekleştiğinde sürüklediğimiz elementi buraya birakabileceğimiz anlamına gelir.
236
+
Bu kodu istediğimiz zaman diğer elementlerin "üzerinden geçip geçmediğimizi" kontrol etmek için kullanabiliriz ve gerçekleştiğinde sürüklediğimiz elementi buraya bırakabileceğımız anlamına gelir.
237
237
238
238
"Bırakılabilir" öğeleri bulmak için genişletilmiş bir `onMouseMove` kodu:
239
239
240
240
```js
241
-
let currentDroppable = null; // potansiyel birakacağımız yer
241
+
let currentDroppable = null; // potansiyel bırakacağımız yer
242
242
243
243
function onMouseMove(event) {
244
244
moveAt(event.pageX, event.pageY);
@@ -256,11 +256,11 @@ function onMouseMove(event) {
256
256
257
257
if (currentDroppable != droppableBelow) { // eğer bir değişiklik varsa
258
258
// not: iki değer de boş olabilir
259
-
// currentDroppable=null eğer bırakabileceğimiz bir noktadan geçmediysel (örneğin boş bir alandan geçtiysek)
259
+
// currentDroppable=null eğer bırakabileceğimiz bir noktadan geçmediysek (örneğin boş bir alandan geçtiysek)
260
260
// droppableBelow=null şu an bu olay sırasında bırakabileceğimiz alanda değilsek
261
261
262
262
if (currentDroppable) {
263
-
// bırabileceğimiz alandan gelip geçme mantığı (ışıklandırmayı kaldır)
263
+
// bırakabileceğimiz alandan gelip geçme mantığı (ışıklandırmayı kaldır)
264
264
leaveDroppable(currentDroppable);
265
265
}
266
266
currentDroppable = droppableBelow;
@@ -276,7 +276,7 @@ Aşağıdaki örnekte, top futbol kalesinin üzerinden sürüklendiğinde, kale
276
276
277
277
[codetabs height=250 src="ball4"]
278
278
279
-
Artık tüm süreç boyunca `currentDroppable` değişkeninde mevcut "bırakacağımız noktanın hedefi" var ve onu ışıklandırmak veya başka şeyler için kullanabiliriz.
279
+
Artık tüm süreç boyunca `currentDroppable` değişkeninde mevcut olan "bırakacağımız noktanın hedefi"var ve onu ışıklandırmak veya başka şeyler için kullanabiliriz.
-`mouseup` olayıyla elementi bırakışı sonlandırabiliriz; veriyi değiştirebiliriz, ögeleri yerinden oynatabiliriz.
294
294
- Üstünden geçtiğimiz elementleri ışıklandırabiliriz.
295
295
-Sürüklemeyi belli bir yönde ve belli bir alanda sınırlandırabiliriz.
296
-
- `mousedown/up` için olay delegeasyonu kullanabiliriz. "Event.target" öğesini kontrol eden geniş alanlı bir olay işleyicisi, yüzlerce öğe için sürükle bırak işlevini yönetebilir.
296
+
-`mousedown/up` için olay delegasyonu kullanabiliriz. "Event.target" öğesini kontrol eden geniş alanlı bir olay işleyicisi, yüzlerce öğe için sürükle bırak işlevini yönetebilir.
297
297
- Bunu daha da ilerletebilirsiniz.
298
298
299
299
Bunun üzerine yazılım mimarisi oluşturan bazı yazılım kütüphaneler (framework) var:`DragZone`, `Droppable`, `Draggable`. Çoğu yukarıdakine benzer algoritmalar içerir. Bu yüzden bu kütühaneleri anlamanız daha kolay olacaktır. Ya da kendiniz yapın, bu süreci nasıl işleyeceğinizi artık biliyorsunuz, muhtemelen başka bir kütüphaneyi kendi kodunuza adapte etmekten daha kolay olacaktır.
0 commit comments