I list below all topic groups, which I have done according to subjects, which they handle. You can return to this topic group by using this menu and the link Table of topic groups on the top of the each page.
Table of topic groupsFront page of help pagesHelp pages6. Help for HTML ALL menu &Detailed element classifications (section 3/4)

Detailed element classifications

Elements have two basic behavior types, inline and block. Normal block elements create a rectangular box and line break before and after them. Depending of elements they can have both block and inline-level child-elements or only inline-level child-elements. Ordinary inline-level elements don't create rectangular boxes around them and they don't create line breaks. They behave like a phase in a line. They can have only inline-level child-elements.

Some elements mix these behaviors. The behavior type is called as flow. The DTD-files says about elements DEL and INS, that these can occur at block or inline level. Depending on situation, they behave like normal block or inline elements.

HTML 4.01 specification has poor explanations. The specification doesn't always tell the expected behavior of each elements. In the DTD-files classifications block, inline and flow are not enough. In fact some elements should be classified as inline-block or inline-flow elements (I have derived the classification inline-block from the CSS2 specification, which have display:inline-table; Table itself is a block-level element, but this property creates to it inline resemble flow; Into CSS3 is added diplay:inline-block to get proper presentation especially to some form elements). These kind of elements are:

The DTD-files try to classify all elements into three behavior type. In my mind used element classifications are not fully consistent:

  1. Especially the group %special; in HTML 4.01 has in the loose.dtd for example following elements: A,, APPLET, FONT, | BASEFONT, SCRIPT. The element SCRIPT doesn't affect to the layout. Elements A and FONT have the same kind of behavior as normal inline-level element like B. The element BASEFONT affects wider than inline-level elements and its effect range is the same kind of elements DEL and INS, which have the flow behavior. This classification creates internal conflicts, because BASEFONT in intended to set before other elements unlike normal inline elements, which are intended to use inside some block-level element. According to advice, the DTD-files should be this kind:
    -- (BASEFONT?, (%flow;)* +(INS | DEL)

    Indeed just this matter creates the internal conflict with the official DTD. This matter is solved in strict document types by deleting the whole element from the document type. We must also remember that in some browsers it behaves like an element container and we must ask, if the whole element is defined incorrectly (look at a note[S]).
  2. The element NOSCRIPT is classified with the entity reference %block; even if it should be rather %flow;. This matter is fixed in the XHTML 1.0 specification, which is at this point more consistent than HTML 4.01. It classify this element under the reference %misc;, which is common to %Inline;, %Block; and %Flow;. I have classified NOSCRIPT according to the XHTML 1.0 DTD.
  3. IMG, APPLET, OBJECT, MAP and IFRAME are replaced elements. Some of them can have also block-level contents. Also some form elements (for example BUTTON), which are listed as %inline; can have block-level contents and the behavior resemble replaced inline elements. They create floating rectangular boxes. In fact they should have an own classification.

Comment. Many authors use FONT at the same way as BASEFONT even if according to the specification it should behave like an ordinary inline-level element. Even if most browsers allow to that element the flow behavior, I recommend to use it according to the specification.

It is however possible to create some sub-classifications in the base of them. Concerning the page layout HTML-elements can be classified into sub-classed at the following way:

This classification is not without problems, because inline-level elements can be classified also as replaced (for example IMG) and non-replaced elements (for example STRONG). Concerning replaced element, the behavior resemble floating block level elements (they are created with the CSS-property float) both empty and non-empty elements.

If we think about the visual rendering of elements, they have only three basic alternatives: block, inline and inline-block. CSS3 will support all of them with the display property. The behaviour of some elements, which have the flow behavior or flow content is different in individual situations. Just this matter makes classificiations problematic.

Official recommendations and other help pages