views:

34

answers:

3

Hi,

I'm having an issue with the HTML below:

<html>
  <body>
    <p style="font-size: large"> 
        Some paragraph text 
        <span><pre style="display:inline">some span text</pre></span> 
        additional paragraph text that continues ...
    </p>

  </body>
</html>

So this is just a paragraph that contains some preformatted text in the middle. The problem that I am having is that both Opera and Chrome don't display this the way I expect. Specifically they close the paragraph tag before the span and force a new line. WTH?!

Using chromes HTML inspection options it shows that the <p> tag is being closed and an empty <span></span> inserted instead of enclosing the <pre>. If the span is removed chrome still closes the <p> tag, forcing a newline.

I need to have the following tag structure display without any newlines being forced <p><span><pre><code></code></pre></span></p>. Is this at all possible or is there another option or workaround?

EDIT: I'm locked into having the <pre> tag as it is part of a syntax highlighting plugin for wordpress.

NOTE: I think the best piece of advice here is to validate your HTML. A lot of the problems I was having was because of invalid HTML that was being handled gracefully by some browsers and not gracefully by others. Validating means you have a clean slate to work from.

+1  A: 

pre is a block level element, it isn't allowed to be inside a span if memory serves right.

You can find out by validating your HTML.

meder
problem remains if the span tag is removed
radman
+2  A: 

Paragraph tags cannot contain block-level elements:

http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

pre is a block level element.

You could instead set the CSS style white-space: pre on your span if you desired to have pre-like behavior in an inline element.

Amber
+3  A: 

Get rid of the pre tag altogether, and just give your span style="white-space:pre". See this page for a description of other white-space options.

<pre> is basically saying <div style="white-space:pre">; what you want is <span style="white-space:pre">.

qmega