2009-11-29 15 views
5

È possibile evidenziare il testo in un documento HTML utilizzando senza wrapping con <span> o qualsiasi altro tag per quella materia?Come evidenziare il testo HTML senza avvolgerlo con i tag?

Ad esempio, nel codice HTML <p>The quick fox</p> Vorrei evidenziare quick ma senza aggiungere un elemento DOM attorno ad esso. L'aggiunta di un elemento DOM a un elemento genitore va bene.

Grazie!

+4

Perché vuoi farlo? – DOK

+1

Vorrei evidenziare (usando i bounding box) MOLTEPLICI voci di ricerca. Tuttavia, immagina i seguenti 2 elementi di ricerca: "Il rapido" e "quick fox". Se evidenzio "Il veloce" avvolgendolo, diventerà un nodo TEXT separato e renderebbe difficile trovare "quick fox". Una tecnica che sto pensando è: 1. temporaneamente l'aggiunta di un elemento . 2. Ricerca del riquadro di delimitazione dell'elemento (usando offset(), larghezza, altezza). 3. Eliminazione dell'elemento precedente. 4. Aggiungere una scatola con le dimensioni precedenti al contenitore. potrebbe funzionare se il testo non è avvolto intorno ... – Sleepster

risposta

8

No, non è possibile.

Non è possibile indicare al browser di rappresentare un testo in modo diverso senza modificare intrinsecamente il DOM, indipendentemente dal fatto che lo si faccia in modo statico o dinamico (con Javascript, ad esempio, come fase di post-elaborazione).

+1

Non è necessario cambiare il DOM se il cambiamento pixel in una sovrapposizione di tela trasparente. –

+0

Come otterresti la posizione assoluta di un testo senza cambiare il DOM? –

+0

Aggiungi l'elemento al DOM, scopri la sua posizione, quindi cancellalo e normalizza(). – Sleepster

0

Non è possibile.

Se si desidera solo presenti tag nel codice sorgente originale, potrebbe essere possibile con l'aggiunta di tag in seguito usando la magia Javascript. Si potrebbe fare qualcosa di simile

<p highlight="quick">The quick fox</p> 

e scrivere una funzione di JQuery/Prototipo/plain JS per evidenziarlo al volo, ma che cosa e perché? Se elabori un po ', qualcuno potrebbe inventare un'idea.

0

L'unico modo per farlo è quello di utilizzare l'elemento <canvas> e eseguire il rendering di tutto manualmente.

1

È possibile se si utilizza un elemento posizionato in modo assoluto un'immagine di sfondo ripetuta trasparente o un colore di sfondo trasparente (usando RGBA o HSLA) e posizionarlo sopra l'area selezionata con.

Un altro modo per farlo sarebbe di avere un elemento posizionato in modo assoluto tela senza un background che occupa tutta la finestra browser e disegnare un rettangolo trasparente sulla selezione.

+0

Come otterresti la posizione assoluta di un testo senza cambiare il DOM? –

+0

Aggiungi l'elemento al DOM, scopri la sua posizione, quindi cancellalo e normalizza(). – Sleepster