write tag definicion code html css pre

tag - ¿Cómo puedo eliminar los espacios en blanco iniciales de mi bloque<pre>/<code> sin eliminar la sangría en mi HTML?



white-space css (3)

Aquí tienes, decidí encontrar algo más concreto que cambiar la forma en que funcionan el code o el pre . Así que hice algunas expresiones regulares para obtener el primer carácter de nueva línea /n (precedido de posibles espacios en blanco: la /s* se usa para limpiar espacios en blanco adicionales al final de una línea de código y antes del carácter de nueva línea (que noté que tenía el suyo)) y busque la tabulación o los caracteres de espacio en blanco que la siguen [/t/s]* (que significa el carácter de tabulación, el carácter de espacio en blanco (0 o más) y establezca ese valor en una variable. Esa variable se utiliza en la función de reemplazo de expresiones regulares para encontrar todos instálelas y reemplácelas con /n (nueva línea). Dado que la segunda línea (donde se establece el pattern ) no tiene la bandera global (una g después de la expresión regular), encontrará la primera instancia del carácter de nueva línea /n y establezca la variable de pattern a ese valor. Entonces, en el caso de una nueva línea, seguida de 2 caracteres de tabulación, el valor del pattern será técnicamente /n/t/t , que se reemplazará donde se encuentre cada carácter de /n elemento de pre code (ya que se ejecuta a través de cada función) y se reemplaza con /n

$("pre code").each(function(){ var html = $(this).html(); var pattern = html.match(//s*/n[/t/s]*/); $(this).html(html.replace(new RegExp(pattern, "g"),''/n'')); });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <body> Here is some code: <pre><code> Here is some fun code! More code One tab One more tab Two tabs and an extra newline character precede me </code></pre> </body>

Tengo el siguiente HTML:

/ block without removing indentation in my HTML?">

By using our site, you acknowledge that you have read and understand our Cookie Policy, Privacy Policy, and our Terms of Service.

16

I have the following HTML:

<body> Here is some code: <pre><code> Here is some fun code! </code></pre> </body>

Pero cuando lo visualizo, porque el código está sangrado, el pre está fuera de control. Puedo arreglar eso trayendo el contenido de nuevo contra la sangría, pero parece tonto. ¿Puedo hacer que el texto anterior se vea sin sangría?

html css pre
share | mejorar esta pregunta
Editado el 31 de julio de 2015 a las 20:48.
27.5k 10 75 135
preguntó 31 de julio de 15 a 19:18
Doug Smith
9,340 46 167 323

marcado como duplicado por Paul Roub , PeeHaa , Zach Saucier , user663031, Tiny Giant, 31 de julio de 2015 a las 20:49

Esta pregunta se ha hecho antes y ya tiene una respuesta. Si esas respuestas no responden completamente a su pregunta, por favor haga una nueva pregunta .

  • ¿Es eso lo que quieres JsFiddle ? - Zakaria Acharki 31 de julio de 15 a 19:20
  • @ZakariaAcharki Si estoy leyendo la pregunta correctamente, eso es lo que queremos visualmente, pero sin tener que eliminar la sangría del marcado. - Maximillian Laumeister 31 de julio de 2015 a las 19:24
  • 2
    Lo que está sucediendo es un poco para lo que es la etiqueta pre ... - PeeHaa 31 de julio de 15 a 19:25
  • 1
    Esta pregunta es un poco confusa. puedes ser un poco mas especifico? - Michael_B 31 de julio de 15 a 19:37
  • 1
    Puede agregar pre{margin-left: -55px;} para corregir su posición. Ventaja: código mínimo a añadir. Desventaja: es un bypass y se necesita cambiar en cada caso particular. Me gusta la manera <!-- --> que Paul Roub ha mencionado anteriormente. Ambos no requieren ningún código JS. - Cheslab 31 de julio de 15 a 19:42.

3 respuestas 3

5

Podrías probar esto tal vez:

pre, code{ white-space:normal; }

Fiddle

share | mejorar esta respuesta
Respondió el 31 de julio de 15 a las 19:57.
zgood
8,696 1 18 26
  • 1
    Upvote, porque funciona. Establezca el espacio en blanco de <pre> en normal, pero el espacio en blanco de <code> debe ser pre . - Reza Hajianpour 13 de agosto de 2016 a las 20:44
  • 3
    Funcionó para mí !. white-space: normal; elimina todos los espacios. Tuve que usar white-space: pre-line; Como eso solo quita los espacios desde el principio. - Diego Jancic 18 de noviembre de 2016 a las 19:16.
4

Aquí tienes, decidí encontrar algo más concreto que cambiar la forma en que funcionan el code o el pre . Así que hice algunas expresiones regulares para obtener el primer carácter de nueva línea /n (precedido de posibles espacios en blanco: la /s* se usa para limpiar espacios en blanco adicionales al final de una línea de código y antes del carácter de nueva línea (que noté que tenía el suyo)) y busque la tabulación o los caracteres de espacio en blanco que la siguen [/t/s]* (que significa el carácter de tabulación, el carácter de espacio en blanco (0 o más) y establezca ese valor en una variable. Esa variable se utiliza en la función de reemplazo de expresiones regulares para encontrar todos instálelas y reemplácelas con /n (nueva línea). Dado que la segunda línea (donde se establece el pattern ) no tiene la bandera global (una g después de la expresión regular), encontrará la primera instancia del carácter de nueva línea /n y establezca la variable de pattern a ese valor. Entonces, en el caso de una nueva línea, seguida de 2 caracteres de tabulación, el valor del pattern será técnicamente /n/t/t , que se reemplazará donde se encuentre cada carácter de /n elemento de pre code (ya que se ejecuta a través de cada función) y se reemplaza con /n

$("pre code").each(function(){ var html = $(this).html(); var pattern = html.match(//s*/n[/t/s]*/); $(this).html(html.replace(new RegExp(pattern, "g"),''/n'')); });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <body> Here is some code: <pre><code> Here is some fun code! More code One tab One more tab Two tabs and an extra newline character precede me </code></pre> </body>

share | mejorar esta respuesta
Editado el 31 de julio de 2015 a las 20:55.
Respondió el 31 de julio de 15 a las 20:49
ctwheels
13.9k 2 20 45
1

Esto funciona, asumiendo que la sangría debe basarse en la primera línea de código:

//get the code element: var code= document.querySelector(''pre code''); //insert a span in front of the first letter. (the span will automatically close.) code.innerHTML= code.textContent.replace(/(/w)/, ''<span>$1''); //get the new span''s left offset: var left= code.querySelector(''span'').getClientRects()[0].left; //move the code to the left, taking into account the body''s margin: code.style.marginLeft= (-left + code.getClientRects()[0].left)+''px'';

code { display: block; //this is necessary for the JavaScript to work properly }

<body> Here is some code: <pre><code> Here is some fun code! And some more! Continuing Wrapping up Closing code now. </code></pre> </body>

share | mejorar esta respuesta
Respondió el 31 de julio de 15 a las 20:10
Rick Hitchcock
30k 2 27 59

No es la respuesta que estás buscando? Busque otras preguntas etiquetadas como html css pre o haga su propia pregunta .

preguntó

visto

9,663 veces

activo

Hace 3 años, 9 meses

Preguntas calientes de la red

preguntas más calientes
defecto
 


Esto funciona, asumiendo que la sangría debe basarse en la primera línea de código:

//get the code element: var code= document.querySelector(''pre code''); //insert a span in front of the first letter. (the span will automatically close.) code.innerHTML= code.textContent.replace(/(/w)/, ''<span>$1''); //get the new span''s left offset: var left= code.querySelector(''span'').getClientRects()[0].left; //move the code to the left, taking into account the body''s margin: code.style.marginLeft= (-left + code.getClientRects()[0].left)+''px'';

code { display: block; //this is necessary for the JavaScript to work properly }

<body> Here is some code: <pre><code> Here is some fun code! And some more! Continuing Wrapping up Closing code now. </code></pre> </body>


Podrías probar esto tal vez:

pre, code{ white-space:normal; }

Fiddle