ASCII art in HTML

67,410

Solution 1

Use the <pre> tag! Put it before and after your EXAMPLE.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Example</title>
    </head>
    <body>
        <pre>
###### #    #   ##   #    # #####  #      ######
#       #  #   #  #  ##  ## #    # #      #      
#####    ##   #    # # ## # #    # #      ##### 
#        ##   ###### #    # #####  #      #      
#       #  #  #    # #    # #      #      #      
###### #    # #    # #    # #      ###### ######
        </pre>
    </body>
</html>

Solution 2

HTML is designed to collapse white space by default. In order words, all series of white spaces characters (spaces, tabs, line feeds...) are replaced by a single space on rendering. You can control this behaviour with the white-space CSS property:

The white-space CSS property is used to to describe how whitespace inside the element is handled.

Values

  • normal Sequences of whitespace are collapsed. Newline characters in the source are handled as other whitespace. Breaks lines as necessary to fill line boxes.
  • pre Sequences of whitespace are preserved, lines are only broken at newline characters in the source.
  • nowrap Collapses whitespace as for normal, but suppresses line breaks (text wrapping) within text.
  • pre-wrap Sequences of whitespace are preserved. Lines are only broken at newline characters in the source and as necessary to fill line boxes.
  • pre-line Sequences of whitespace are collapsed. Lines are broken at newlines in the source and as necessary to fill line boxes.

In the case ASCII art you also want to enforce a fixed-width font-family.

.ascii-art {
    font-family: monospace;
    white-space: pre;
}
<div class="ascii-art">
###### #    #   ##   #    # #####  #      ######
#       #  #   #  #  ##  ## #    # #      #      
#####    ##   #    # # ## # #    # #      ##### 
#        ##   ###### #    # #####  #      #      
#       #  #  #    # #    # #      #      #      
###### #    # #    # #    # #      ###### ######
</div>
Share:
67,410

Related videos on Youtube

Mladek
Author by

Mladek

Updated on June 22, 2020

Comments

  • Mladek
    Mladek almost 3 years

    What could I do to make it print like it looks in the HTML document in the web browser?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <title>Example</title>
        </head>
        <body>
            ###### #    #   ##   #    # #####  #      ######
            #       #  #   #  #  ##  ## #    # #      #      
            #####    ##   #    # # ## # #    # #      ##### 
            #        ##   ###### #    # #####  #      #      
            #       #  #  #    # #    # #      #      #      
            ###### #    # #    # #    # #      ###### ######
        </body>
    </html>
    

    Gives:

    # # ## # # ##### # ###### # # # # # ## ## # # # # ##### ## # # # ## # # # # > ##### # ## ###### # # ##### # # # # # # # # # # # # ###### # # # # # # # ###### ######
  • John Fiala
    John Fiala over 5 years
    Although I'm happy for all the rep my answer has created, Alvaro's answer is possibly even more correct, as these days the way to do it is to define a class like they have.
  • Álvaro González
    Álvaro González over 5 years
    @JohnFiala Still, it can be argued that <pre> is more semantic than <div>. Let's say that both answers provide the full picture ;-)
  • Jan Kyu Peblik
    Jan Kyu Peblik over 5 years
    Although technically you'd probably want <pre># ... #</pre> (without a newline) or to use comments (<!-- -->) to eliminate white space you likely do not want.
  • HappyHands31
    HappyHands31 over 3 years
    This doesn't seem to be working for art that includes escaping characters (i.e. newline '\'). See the kittens found here: user.xmission.com/~emailbox/ascii_cats.htm - any way to compensate?
  • thisisjaymehta
    thisisjaymehta almost 3 years
    You will need to escape newlines with '\'. For example do '\\' for a single slash ('\') in art.