开发者

<pre> tag making browsers close paragraphs

开发者 https://www.devze.com 2023-01-12 13:39 出处:网络
I\'m having an issue with the HTML below: <html> <body> <p style=\"font-size: large\">

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 emp开发者_StackOverflow社区ty <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.


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">.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消