Skip to content

Commit 28165db

Browse files
committed
Translate Event: Browser-Event/Article.md - 100%
1 parent e6c87bb commit 28165db

File tree

2 files changed

+41
-41
lines changed

2 files changed

+41
-41
lines changed
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11

2-
First we need to choose a method of positioning the ball.
2+
Pertama kita perlu memilih metode untuk memposisikan bola.
33

4-
We can't use `position:fixed` for it, because scrolling the page would move the ball from the field.
4+
Kita tidak dapat menggunakan `position:fixed` untuk itu, karena pada saat halaman digulir bola akan berpindah dari lapangan.
55

6-
So we should use `position:absolute` and, to make the positioning really solid, make `field` itself positioned.
6+
Jadi kita sebaiknya menggunakan `position:absolute` dan, untuk membuat posisinya benar-benar tepat, buat lapangan(_`field`_) itu sendiri diposisikan.
77

8-
Then the ball will be positioned relatively to the field:
8+
Kemudian bola akan diposisikan relatif terhadap lapangan(_`field`_):
99

1010
```css
1111
#field {
@@ -16,36 +16,36 @@ Then the ball will be positioned relatively to the field:
1616

1717
#ball {
1818
position: absolute;
19-
left: 0; /* relative to the closest positioned ancestor (field) */
19+
left: 0; /* relatif ke posisi terdekat blok atas (lapangan) */
2020
top: 0;
21-
transition: 1s all; /* CSS animation for left/top makes the ball fly */
21+
transition: 1s all; /* Animasi CSS untuk left/top untuk membuat bolanya terbang */
2222
}
2323
```
2424

25-
Next we need to assign the correct `ball.style.left/top`. They contain field-relative coordinates now.
25+
Selanjutnya kita harus mengatur dengan benar `ball.style.left/top`. Mereka memiliki koordinat relatif ke lapangan(_`field`_) sekarang.
2626

27-
Here's the picture:
27+
Berikut ini gambarnya:
2828

2929
![](move-ball-coords.svg)
3030

31-
We have `event.clientX/clientY` -- window-relative coordinates of the click.
31+
Kita memiliki `event.clientX/clientY` -- koordinat relatif jendela (_window_) dari klik.
3232

33-
To get field-relative `left` coordinate of the click, we can substract the field left edge and the border width:
33+
Untuk mendapatkan koordinat kiri relatif terhadap lapangan(_`field`_), kita kurangkan dengan nilai dari ujung dan pembatas kiri lapangan:
3434

3535
```js
3636
let left = event.clientX - fieldCoords.left - field.clientLeft;
3737
```
3838

39-
Normally, `ball.style.left` means the "left edge of the element" (the ball). So if we assign that `left`, then the ball edge, not center, would be under the mouse cursor.
39+
Biasanya, `ball.style.left` artinya "ujung kiri dari elemen" (bola). Jadi kita mengatur nilai `left`, kemudian ujung bola, bukan tengah, akan berada tepat dibawah kursor mouse.
4040

41-
We need to move the ball half-width left and half-height up to make it center.
41+
Kita perlu memindahkan bola setengah lebar kiri dan setengah tinggi atas untuk membuatnya di tengah.
4242

43-
So the final `left` would be:
43+
Jadi nilai terakhir `left` akan menjadi:
4444

4545
```js
4646
let left = event.clientX - fieldCoords.left - field.clientLeft - ball.offsetWidth/2;
4747
```
4848

49-
The vertical coordinate is calculated using the same logic.
49+
Koordinat vertikal di ukur dengan menggunakan logika yang sama.
5050

51-
Please note that the ball width/height must be known at the time we access `ball.offsetWidth`. Should be specified in HTML or CSS.
51+
Harap dicatat bahwa lebar/tinggi bola harus di ketahui pada saat kita mengakses `ball.offsetWidth`. Sebaiknya di atur pada HTML atau CSS.

2-ui/2-events/01-introduction-browser-events/article.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -350,44 +350,44 @@ Ini terjadi karena pada saat peramban membaca atribut, itu membuat sebuah penang
350350
````
351351

352352

353-
## Object handlers: handleEvent
353+
## Objek penangan: handleEvent
354354

355-
We can assign not just a function, but an object as an event handler using `addEventListener`. When an event occurs, its `handleEvent` method is called.
355+
Kita bisa mengatur bukan hanya fungsi, tapi sebuah objek sebagai penangan peristiwa menggunakan `addEventListener`. Pada saat sebuah peristiwa terjadi, Itu memanggil metode `handleEvent`.
356356

357-
For instance:
357+
Contohnya:
358358

359359

360360
```html run
361-
<button id="elem">Click me</button>
361+
<button id="elem">Klik saya</button>
362362

363363
<script>
364364
let obj = {
365365
handleEvent(event) {
366-
alert(event.type + " at " + event.currentTarget);
366+
alert(event.type + " pada " + event.currentTarget);
367367
}
368368
};
369369
370370
elem.addEventListener('click', obj);
371371
</script>
372372
```
373373

374-
As we can see, when `addEventListener` receives an object as the handler, it calls `obj.handleEvent(event)` in case of an event.
374+
Seperti yang bisa kita lihat, pada saat `addEventListener` menerima objek sebagai penangan, itu akan memanggil `obj.handleEvent(event)` jika sebuah peristiwa terjadi.
375375

376-
We could also use a class for that:
376+
Kita juga dapat menggunakan Kelas (_class_) untuk hal itu:
377377

378378

379379
```html run
380-
<button id="elem">Click me</button>
380+
<button id="elem">Klik saya</button>
381381

382382
<script>
383383
class Menu {
384384
handleEvent(event) {
385385
switch(event.type) {
386386
case 'mousedown':
387-
elem.innerHTML = "Mouse button pressed";
387+
elem.innerHTML = "Tombol mouse ditekan";
388388
break;
389389
case 'mouseup':
390-
elem.innerHTML += "...and released.";
390+
elem.innerHTML += "...dan dilepas.";
391391
break;
392392
}
393393
}
@@ -401,12 +401,12 @@ We could also use a class for that:
401401
</script>
402402
```
403403

404-
Here the same object handles both events. Please note that we need to explicitly setup the events to listen using `addEventListener`. The `menu` object only gets `mousedown` and `mouseup` here, not any other types of events.
404+
Disini objek yang sama menanggani kedua peristiwa. Tolong di catat bahwa kita harus secara eksplisit mengatur peristiwa untuk mendengar menggunakan `addEventListener`. Objek `menu` hanya dapat menerima `mousedown` dan `mouseup` pada contoh diatas, bukan tipe peristiwa lainnya.
405405

406-
The method `handleEvent` does not have to do all the job by itself. It can call other event-specific methods instead, like this:
406+
Metode `handleEvent` tidak harus melakukan semua proses secara mandiri. Itu dapat memanggil metode lain yang menanggani peristiwa secara spesifik, seperti ini:
407407

408408
```html run
409-
<button id="elem">Click me</button>
409+
<button id="elem">Klik saya</button>
410410

411411
<script>
412412
class Menu {
@@ -417,11 +417,11 @@ The method `handleEvent` does not have to do all the job by itself. It can call
417417
}
418418
419419
onMousedown() {
420-
elem.innerHTML = "Mouse button pressed";
420+
elem.innerHTML = "Tombol mouse ditekan";
421421
}
422422
423423
onMouseup() {
424-
elem.innerHTML += "...and released.";
424+
elem.innerHTML += "...dan dilepas.";
425425
}
426426
}
427427
@@ -431,22 +431,22 @@ The method `handleEvent` does not have to do all the job by itself. It can call
431431
</script>
432432
```
433433

434-
Now event handlers are clearly separated, that may be easier to support.
434+
Sekarang penangan peristiwa berbeda, dan memudahkan proses pendukungan.
435435

436-
## Summary
436+
## Ringkasan
437437

438-
There are 3 ways to assign event handlers:
438+
Ada 3 cara untuk mengatur penangan peristiwa:
439439

440-
1. HTML attribute: `onclick="..."`.
441-
2. DOM property: `elem.onclick = function`.
442-
3. Methods: `elem.addEventListener(event, handler[, phase])` to add, `removeEventListener` to remove.
440+
1. Atribute HTML: `onclick="..."`
441+
2. Properti DOM: `elem.onclick = function`.
442+
3. Metode: `elem.addEventListener(event, handler[, phase])` untuk menambahkan, `removeEventListener` untuk menghapuskan.
443443

444-
HTML attributes are used sparingly, because JavaScript in the middle of an HTML tag looks a little bit odd and alien. Also can't write lots of code in there.
444+
Atribute HTML digunakan untuk kasus tertentu, karena Javascript ditengah tag HTML akan kelihatan aneh. Dan juga akan sulit untuk menulis banyak kode di dalam tag HTML.
445445

446-
DOM properties are ok to use, but we can't assign more than one handler of the particular event. In many cases that limitation is not pressing.
446+
Properti DOM boleh digunakan, tapi kita tidak dapat mengatur lebih dari 1 penangan untuk peristiwa tertentu. Namun tidak sering kita membutuhkan lebih dari 2 penangan.
447447

448-
The last way is the most flexible, but it is also the longest to write. There are few events that only work with it, for instance `transitionend` and `DOMContentLoaded` (to be covered). Also `addEventListener` supports objects as event handlers. In that case the method `handleEvent` is called in case of the event.
448+
Cara terakhir lebih fleksible, tapi itu juga merupakan cara terpanjang untuk menulis. Ada beberapa peristiwa yang hanya akan bisa digunakan pada cara ini, seperti misalnya `transitionend` dan `DOMContentLoaded` (akan di bahas). Dan juga objek dapat digunakan sebagai penangan pada `addEventListener`. Pada kasus ini metode `handleEvent` akan dipanggil pada saat peristiwa terjadi.
449449

450-
No matter how you assign the handler -- it gets an event object as the first argument. That object contains the details about what's happened.
450+
Tidak penting bagaimana kamu mengatur penangan -- itu akan mendapat sebuah objek peristiwa sebagai argumen pertama. Objek itu memiliki detail tentang apa yang terjadi.
451451

452-
We'll learn more about events in general and about different types of events in the next chapters.
452+
Kita akan mempelajari lebih lanjut tentang peristiwa secara umum dan perbedaan tipe peristiwa di bab selanjutnya.

0 commit comments

Comments
 (0)