Why won't my <legend> element display inline?

Mild Fuzz picture Mild Fuzz · Apr 28, 2011 · Viewed 10.6k times · Source

I am trying to apply display: inline; to the <legend> element in my <fieldset> element, so that the following <span> will follow on the same line, but my CSS is having no effect.

JSFiddle

EDIT

I have no control over the HTML; I can only edit CSS

Answer

Boris Zbarsky picture Boris Zbarsky · Apr 28, 2011

Legends are special. In particular, their default rendering can't be described in CSS, so browsers use non-CSS means of rendering them. What that means is that a statically positioned legend will be treated like a legend and be separate from the actual content of the fieldset.

The weird doesn't end there; if you reverse the order of the span and the legend, the legend will still show up on top in most browsers (but not in Opera, apparently).