2013-04-05 15 views
29

Desidero un carattere di interruzione di riga opzionale che sia sempre invisibile che funzioni con lo stile CSS word-wrap: break-word;.Entità HTML di interruzione di riga facoltativa che è sempre invisibile

Ecco alcune specifiche. Il mio obiettivo è rompere i collegamenti lunghi in posti ragionevoli. Questi caratteri sono un buon punto di partenza: -, ., _, /, \. Questa non è una domanda Rails-specifica, ma ho voluto condividere alcuni codice che sto usando ora:

module ApplicationHelper 
    def with_optional_line_breaks(text) 
    text.gsub(%r{([-._/\\])}, '\1­') 
    end 
end 

Ecco il problema con il codice di cui sopra: quando ­ ha effetto (in una tabella con: word-wrap: break-word;), ­ viene visualizzato come -. Non voglio vedere lo -; Voglio un'interruzione di riga senza alcun carattere mostrato.


+0

Il semplice tag
non funziona in questo caso? –

+0

@Christopher: '
' non è un'interruzione di riga opzionale –

+0

Questa risposta può essere di aiuto. Non è un personaggio, ma usa span. http://stackoverflow.com/questions/5392853/html-css-denoting-a-preferred-place-for-a-line-break – Unrelated

risposta

47

​ è l'entità HTML per un carattere unicode denominato spazio a larghezza zero (ZWSP).

"In pagine HTML, questo spazio può essere utilizzato come un potenziale interruzione di linea in lunghe parole come alternativa al tag <wbr>." - Zero-width space - Wikipedia

Il tag <wbr> funziona anche, come accennato di Aaron's answer. Penso che preferisco questa entità HTML sul tag perché l'entità sembra più semplice: unicode lo gestisce, non il browser web.

+2

Unicode lo gestisce, ma i browser Web non sono tenuti a conformarsi allo standard Unicode oa supportare questo particolare carattere. Questo è un problema complicato, ma in generale, ZWSP fallisce solo su browser abbastanza vecchi, mentre '' ha stranezze anche nei nuovi browser; vedi http://www.cs.tut.fi/~jkorpela/html/nobr.html –

+1

@David, che dire del separatore invisibile? Vedi http://www.fileformat.info/info/unicode/char/2063/index.htm – Pacerier

+0

@Pacerier Questo sembra essere inteso per lo spazio bianco matematico, dato il contesto di http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:subhead=Invisible%20operators:]. Da http://www.fileformat.info/info/unicode/char/2063/index.htm: "operatore di contiguità che indica che i simboli matematici adiacenti formano un elenco, ad esempio quando non viene utilizzata alcuna virgola visibile tra più indici". –

4

<wbr> sembra che fa ciò che si vuole, ma sembra che il supporto per esso, e &shy; per quella materia, è very inconsistent. Quindi, sfortunatamente, potrebbe non esserci un modo particolarmente buono di fare quello che vuoi.

+2

Grazie. Una nota: l'affermazione che il supporto del browser che è incoerente è del 2008. Sul mio sistema, i browser moderni (Firefox, Safari, Chrome) fanno la cosa giusta con ''. Mi aspetto che lavorino anche per altri metodi di word/line breaking. Una contabilità completa può essere trovata in [Soft hyphen (SHY) - un problema difficile?] (Http://www.cs.tut.fi/~jkorpela/shy.html) –

+0

Ecco una risposta che fornisce una buona panoramica del supporto di parole-sillabazione/-breaking/-splitting tecniche: https://stackoverflow.com/a/28672471/3439786 Inoltre c'è anche una pagina _caniuse_: http://caniuse.com/#feat=wbr-element – Dennis98

+0

Un vantaggio di '' sull'entità a larghezza zero l'entità Unicode è che se la stringa che si desidera interrompere è un URL che potrebbe essere copiato da un browser (come quando si fornisce riferimento accademico a una pagina Web che non è un collegamento), l'entità Unicode viene copiata (almeno in MacOS) e l'URL risultante sembra corretto in un browser ma si interrompe quando si tenta di accedervi. '' non ha questo problema. – theJBRU