Come cambiare un intervallo per sembrare un pre con CSS?


108

È possibile modificare un <span>tag (o <div>) per preformattare i suoi contenuti come <pre>farebbe un tag utilizzando solo CSS?

Risposte:


164

Guarda il foglio di stile predefinito CSS2.1 del W3C o la bozza di lavoro CSS2.2 . Copia tutte le impostazioni per PRE e inseriscile nella tua classe.

pre {
    display: block;
    unicode-bidi: embed;
    font-family: monospace;
    white-space: pre;
}

1
È una buona idea farlo in questo modo per capire da dove provengono queste impostazioni predefinite.
Diodeus - James MacFarlane

2
Quando provo questo, le interruzioni di riga non vengono mantenute.
Agnel Kurian

Il tag <pre> mostrerà le barre di scorrimento orizzontali quando il testo è troppo largo, ma questo css non lo farà. Qualcuno sa come mostrarli?
shindigo

1
@shindigo Hai provato a usare overflow: scroll? O se vuoi solo lo scorrimento orizzontale overflow-x: scroll developer.mozilla.org/en-US/docs/Web/CSS/overflow
Kanmuri

1
@shindigo overflow: auto;potrebbe essere migliore altrimenti potresti ritrovarti con due set di barre di scorrimento quando non ne hai bisogno.
Spechal


25

Questo fa sembrare uno SPAN un PRE:

span {
  white-space: pre;
  font-family: monospace;
  display: block;
}

Ricordarsi di modificare il selettore CSS come appropriato.



2

Prova questo

span {
    white-space: pre;
    font-family: monospace;
    display: block;
    unicode-bidi: embed
}

1

Prova questo stile

.pre {

white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
line-height: 1.5;   
word-break: break-all;
white-space: pre;
white-space: pre\9; /* IE7+ */
display: block;
}

Usato lo stesso qui - http://www.makemyshop.in/


0

Perché non utilizzare semplicemente il tag <pre>, invece del tag span? Entrambi sono in linea, quindi entrambi dovrebbero comportarsi nel modo desiderato. Se hai problemi a sovrascrivere l'intera definizione di <pre>, dagli semplicemente un id / classe.


1
A volte hai già un intervallo su una pagina e non puoi modificarlo, come se facesse parte di un sistema CMS esistente.
Mr. Shiny and New 安 宇

B / c il framework si rifiuta di mettere i contenuti sotto il mio <pre> nel modo in cui lo chiedo. Potrei aggirarlo, ma è molto più difficile che impostare solo alcuni oggetti di scena CSS.
jsight
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.