El estándar HTML clasifica a todos sus elementos en dos grandes grupos: elementos en línea y elementos de bloque.
Los elementos de bloque ("block elements" en inglés) siempre empiezan en una nueva línea y ocupan todo el espacio disponible hasta el final de la línea. Por su parte, los elementos en línea ("inline elements" en inglés) no empiezan necesariamente en nueva línea y sólo ocupan el espacio necesario para mostrar sus contenidos.
Debido a este comportamiento, el tipo de un elemento influye de forma decisiva en la caja que el navegador crea para mostrarlo. La siguiente imagen muestra las cajas que crea el navegador para representar los diferentes elementos que forman una página HTML:
El primer elemento de la página anterior es un párrafo. Los párrafos son elementos de bloque y por ese motivo su caja empieza en una nueva línea y llega hasta el final de esa misma línea. Aunque los contenidos de texto del párrafo no son suficientes para ocupar toda la línea, el navegador reserva todo el espacio disponible en la primera línea.
El segundo elemento de la página es un enlace. Los enlaces son elementos en línea, por lo que su caja sólo ocupa el espacio necesario para mostrar sus contenidos. Si después de este elemento se incluye otro elemento en línea (por ejemplo otro enlace o una imagen) el navegador mostraría los dos elementos en la misma línea, ya que existe espacio suficiente.
Por último, el tercer elemento de la página es un párrafo que se comporta de la misma forma que el primer párrafo. En su interior, se encuentra un enlace que también se comporta de la misma forma que el enlace anterior. Así, el segundo párrafo ocupa toda una línea y el segundo enlace sólo ocupa el espacio necesario para mostrar sus contenidos.
Por sus características, los elementos de bloque no pueden insertarse dentro de elementos en línea y tan sólo pueden aparecer dentro de otros elementos de bloque. En cambio, un elemento en línea puede aparecer tanto dentro de un elemento de bloque como dentro de otro elemento en línea.
Los elementos en línea definidos por HTML son: a
, abbr
, acronym
, b
, basefont
, bdo
, big
, br
, cite
, code
, dfn
, em
, font
, i
, img
, input
, kbd
, label
, q
, s
, samp
, select
, small
, span
, strike
, strong
, sub
, sup
, textarea
, tt
, u
, var
.
Los elementos de bloque definidos por HTML son: address
, blockquote
, center
, dir
, div
, dl
, fieldset
, form
, h1
, h2
, h3
, h4
, h5
, h6
, hr
, isindex
, menu
, noframes
, noscript
, ol
, p
, pre
, table
, ul
.
Los siguientes elementos también se considera que son de bloque: dd
, dt
, frameset
, li
, tbody
, td
, tfoot
, th
, thead
, tr
.
Los siguientes elementos pueden ser en línea y de bloque según las circunstancias: button
, del
, iframe
, ins
, map
, object
, script
.