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
Copy file name to clipboardExpand all lines: 2-ui/99-ui-misc/02-selection-range/article.md
+27-27Lines changed: 27 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,34 +6,34 @@ libs:
6
6
7
7
# Selection and Range
8
8
9
-
In questo articolo copriremo la selezione nel documento, così come la selezione nei campi di testo, come gli `<input>`.
10
-
Javascript può trattare la selezione attuale, selezionare/deselezionare interamnte o parzialmente, rimuovere la parte selezionata dal documento, racchiuderla in un tag e così via.
9
+
In questo articolo copriremo la selezione nel documento, e la selezione nei campi di testo, come gli `<input>`.
10
+
Javascript può trattare la selezione attuale, selezionare/deselezionare interamente o parzialmente, rimuovere la parte selezionata dal documento, racchiuderla in un tag e così via.
11
11
12
12
13
13
Puoi già utilizzare gli script già pronti nel "Riepilogo". Ma otterrai molte più informazioni leggendo tutto il capitolo. Gli oggetti sottostanti `Range` e `Selection` sono facili da afferrare, e potrai quindi farne ciò che vuoi senza dover utilizzare script già pronti.
14
14
15
15
## Range
16
-
I concetto base della selezione è [Range](https://dom.spec.whatwg.org/#ranges): banalmente, un paio di "punti di confine": inizione e fine del range.
17
-
Ogni punto è rappresentato come un nodo DOM genitore con il relativo offset dal suo inizio. Se il nodo genitore è un nodo di tipo elemento, allora l'offset è il numero del figlio, per un nodo di tipo testo è invece la posiziona nel testo.
16
+
I concetto base della selezione è [Range](https://dom.spec.whatwg.org/#ranges): banalmente, un paio di "punti di confine": inizio e fine del range.
17
+
Ogni punto è rappresentato come un nodo DOM genitore con il relativo offset dal suo inizio. Se il nodo genitore è un nodo di tipo elemento, allora l'offset è il numero del figlio, per un nodo di tipo testo è invece la posizione nel testo.
18
18
19
-
Un esempio a seguire:
19
+
Qui di seguito un esempio:
20
20
21
21
Selezioniamo qualcosa.
22
22
23
-
Prima, possiamo creare un range (il costruttore non ha parametri):
23
+
Come prima cosa, possiamo creare un range (il costruttore non ha parametri):
24
24
25
25
```js
26
26
let range =newRange();
27
27
```
28
-
Quindi possiamo impostare i confini della nostra selezione usando`range.setStart(node, offset)` e `range.setEnd(node, offset)`.
28
+
Quindi possiamo impostare i limiti della nostra selezione usando `range.setStart(node, offset)` e `range.setEnd(node, offset)`.
29
29
30
30
Ad esempio, considera questo frammento di HTML:
31
31
32
32
```html
33
33
<pid="p">Example: <i>italic</i> and <b>bold</b></p>
34
34
```
35
35
36
-
Qui la sua struttura DOM, notare che qui i nodi tetuali rivestonon un ruolo importante per noi:
36
+
Questa qui è la sua struttura DOM, e è possibile notare che in questo esempio i nodi testuali per noi rivestono un ruolo importante:
37
37
38
38
<divclass="select-p-domtree"></div>
39
39
@@ -94,10 +94,10 @@ Selezioniamo `"Example: <i>italic</i>"`. Questi sono i primi due figli di `<p>`
94
94
</script>
95
95
```
96
96
97
-
-`range.setStart(p, 0)` -- setta l'inizio al figlio #0 di `<p>` (questo è il nodo testuale `"Example: "`).
98
-
-`range.setEnd(p, 2)` -- allarga il range fino al figlio #2 di `<p>` (escluso) (Questo è il nodo testuale `" and "`, ma essendo la fine non viene incluso, così l'ultimo nodo selezionato è `<i>`).
97
+
-`range.setStart(p, 0)` -- setta l'inizio sul figlio #0 di `<p>` (questo è il nodo testuale `"Example: "`).
98
+
-`range.setEnd(p, 2)` -- estende il range fino al figlio #2 di `<p>` (escluso) (Questo è il nodo testuale `" and "`, ma essendo la fine non viene incluso, così l'ultimo nodo selezionato è `<i>`).
99
99
100
-
Qui un testo più flessibile dove puoi provare più varianti:
100
+
Qui un testo più flessibile all'nterno del quale si possono provare più varianti:
101
101
102
102
```html run autorun
103
103
<pid="p">Example: <i>italic</i> and <b>bold</b></p>
@@ -123,15 +123,15 @@ Ad esempio, selezionando da `1` a `4` restituisce il range `<i>italic</i> and <b
123
123
124
124

125
125
126
-
Non dobbiamo usare lo stesso nodo in `setStart` e `setEnd`. Un range può spaziare attraverso un serie di nodi non necessariamente correlati. La sola cosa che importa è che il punto finale sia dopo il punto iniziale.
126
+
Non dobbiamo usare lo stesso nodo in `setStart` e `setEnd`. Un range può spaziare attraverso un serie di nodi non necessariamente correlati. La sola cosa che importa è che la fine sia dopo l'inizio.
127
127
128
128
### Selezionare porzioni di nodi testuali
129
129
130
-
Selzioniamo parzialmente il test, in questa maniera:
130
+
Selezioniamo parzialmente il testo, in questa maniera:
131
131
132
132

133
133
134
-
Possiamo fare anche questo, abbiamo solo bisogni di impostare l'inizio e la fine come offset relativo nei nodi testuali.
134
+
Possiamo fare anche questo, abbiamo solo bisogno di impostare l'inizio e la fine come offset relativo nei nodi testuali.
135
135
136
136
Dobbiamo creare un range che:
137
137
- cominci dalla posizione 2 in `<p>` primo figlio (prendendo tutto tranne le prime due lettere di "Ex<b>ample:</b> ")
@@ -153,7 +153,7 @@ Dobbiamo creare un range che:
153
153
</script>
154
154
```
155
155
156
-
L'oggetto range ha le seguenti proprietà:
156
+
L'oggetto Range ha le seguenti proprietà:
157
157
158
158

159
159
@@ -163,7 +163,7 @@ L'oggetto range ha le seguenti proprietà:
163
163
- nell'esempio sopra: primo nodo testuale dentro `<b>` e `3`.
164
164
-`collapsed` -- booleano, `true` se il range comincia e finisce nello stesso punto (quindi non c'è contenuto nel range),
165
165
- nell'esempio sopra: `false`
166
-
-`commonAncestorContainer` -- il più vicino genitore tra tutti inodi all'interno del range,
166
+
-`commonAncestorContainer` -- il più vicino genitore tra tutti i nodi all'interno del range,
167
167
- nell'esempio sopra: `<p>`
168
168
169
169
## Metodi range
@@ -172,7 +172,7 @@ Ci sono una serie di metodi comodi per manipolare i range.
172
172
173
173
Imposta l'inizio del range:
174
174
175
-
-`setStart(node, offset)` imposta l'inzio su: posiziona`offset` nel `node`
175
+
-`setStart(node, offset)` imposta l'inzio su: posizione`offset` nel `node`
176
176
-`setStartBefore(node)` imposta l'inizio su: destra prima di `node`
177
177
-`setStartAfter(node)` imposta l'inizio su: destra dopo `node`
178
178
@@ -198,7 +198,7 @@ Per manipolare il contenuto attraverso il range:
198
198
-`insertNode(node)` -- inserisce `node` nel documento all'inizio del range
199
199
-`surroundContents(node)` -- avvolge `node` attorno ad un contenuto range. Per questa azione, il range deve contenere i tag di apertura e chiusura per tutti gli elementi dentro di esso: non possono esserci range del tipo `<i>abc`.
200
200
201
-
Con questi metodi possiamo fare di base qualunque cosa con i nodi selezionati.
201
+
Con questi metodi, di base, possiamo fare qualunque cosa con i nodi selezionati.
202
202
203
203
Ecco il test per vederli in azione:
204
204
@@ -257,10 +257,10 @@ Click buttons to run methods on the selection, "resetExample" to reset it.
257
257
</script>
258
258
```
259
259
260
-
Ci sono anche metodi per confrontare o range, ma sono usati raramente. Nel caso ne avessi bisogno puoi fare riferimento a [spec](https://dom.spec.whatwg.org/#interface-range) o su [MDN manual](mdn:/api/Range).
260
+
Ci sono anche metodi per confrontare i range, ma vengono usati raramente. Nel caso ne avessi bisogno puoi fare riferimento a [spec](https://dom.spec.whatwg.org/#interface-range) o su [MDN manual](mdn:/api/Range).
261
261
262
262
263
-
## Selezione
263
+
## Selection
264
264
265
265
`Range` è un oggetto generico per la gestione i range di selezione. Possiamo creare questi oggetti, passarli in giro -- da soli non selezionano nulla visivamente.
266
266
@@ -278,7 +278,7 @@ Gli altri browser supportano al massimo 1 range. Come possiamo vedere, alcuni de
278
278
279
279
## Proprietà di Selection
280
280
281
-
In modo simile a un rangem una selezione ha un inizio, chiamato "anchor", e una fine, chiamata "focus".
281
+
In modo simile a un range, una selezione ha un inizio, chiamato "anchor", e una fine, chiamata "focus".
282
282
283
283
Le principali proprietà di selection sono:
284
284
@@ -287,16 +287,16 @@ Le principali proprietà di selection sono:
287
287
-`focusNode` -- il nodo dove finisce la selezione,
288
288
-`focusOffset` -- l' offset in `focusNode` dove finisce la selezione,
289
289
-`isCollapsed` -- `true` se la selezione non seleziona nulla (range vuoto) o non esiste.
290
-
-`rangeCount` -- conto dei range nella selezione, massimo`1`in tutti i browser eccetto Firefox.
290
+
-`rangeCount` -- conto dei range nella selezione, massimo`1`per tutti i browser, eccetto Firefox.
291
291
292
292
````smart header="La fine della selezione può stare nel documento prima dell'inizio"
293
293
Ci sono tanti modi per selezionare il contenuto, dipende dallo user agent: mouse, hotkeys, tap sullo schermo, etc.
294
294
295
-
Alcuni di essi, come il mouse, permette che la stessa selezione possa essere creata nelle due direzioni: "da sinistra a destra" e da "destra a sinistra".
295
+
Alcuni di essi, come il mouse, permette che la selezione stessa possa essere creata nelle due direzioni: "da sinistra a destra" e da "destra a sinistra".
296
296
297
297
Se l'inizio (anchor) della selezione nel documento va prima della fine (focus), si dice che questa selezione ha una direzione "forward" (in avanti)
298
298
299
-
Ad esempio se l'utente comincia la selezione con il mouse andando da "Example" to "italic":
299
+
Ad esempio, se l'utente comincia la selezione con il mouse andando da "Example" to "italic":
300
300
301
301

302
302
@@ -309,16 +309,16 @@ Questo è diverso dagli oggetti `Range` i quali sono sempre direzionati in avant
309
309
310
310
## Eventi di Selection
311
311
312
-
Ci sono eventi nei quali tenere traccia della selezione:
312
+
Ci sono eventi nei quali si può tenere traccia della selezione:
313
313
314
314
-`elem.onselectstart` -- quando una selezione comincia su `elem`, per esempio, l'utente comincia a muovere il mouse tenendo il pulsante premuto.
315
315
- Il prevent dell'azione di default, fa in modo che la selezione non cominci.
316
316
-`document.onselectionchange` -- ogni volta che una selezione viene modificata.
317
317
- Nota bene: questo gestore può essere impostato solo su un `document`.
318
318
319
-
### Demo di traccamento di Selection
319
+
### Demo di tracciamento per Selection
320
320
321
-
Qui c'è una piccola demo chemostra i confini della selection dinamicamente come essa cambia:
321
+
Ecco una piccola demo che mostra i limiti, (intesi come confini), della Selection, dinamicamente al variare di essa:
322
322
323
323
```html run height=80
324
324
<pid="p">Select me: <i>italic</i> and <b>bold</b></p>
0 commit comments