02 VisualFormattingModel
02 VisualFormattingModel
Programación Web II
© 2023
MSc. Lic. Hugo Minni
En esta sesión de estudio y la siguiente nos zambulliremos de pleno en los aspectos internos
de cómo son interpretados y dibujados los elementos HTML que hemos venido usando. La
terminología es un poco dura al principio, pero es necesaria para definir conceptos y
características basales de HTML y CSS.
<html>
<head>
<Style>
body {
font: normal 66%/normal Verdana, Helvetica, Arial, sans-serif
normal normal;
width: 400px;
height: 400px;
border-right:1px dotted #BCBCBC;
border-bottom:1px dotted #BCBCBC;
}
div {
background-color: #DFE7F2;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
margin-left: 10px;
}
</Style>
</head>
<body>
</html>
Todos los elementos de HTML caen en una de dos categorías: block-level element o
inline-level element.
Block-level element
Block-level elements son aquellos elementos HTML de la página que el browser “dibuja”
como bloques. Los elementos <p> y <div> son ejemplos de block-level elements.
Esta box a su vez contiene a nuestro elemento div, que al ser un elemento block-level
(que genera una block-level box) ocupa el ancho completo que le proporciona su
contenedor:
Se dice que la box del elemento body es el containing-block de la box del elemento div.
En HTML, toda box actúa como containing block para sus boxes descendientes.
Inline-level element
Son aquellos elementos de la página que no forman nuevos bloques de contenido, sino
que el contenido es distribuido en líneas.
Elementos como <span> o <img> son ejemplos de inline-level elements.
Normal flow es la manera en que los elementos son ubicados en una página Web cuando
no son afectados por ningún posicionamiento exacto. (Veremos posicionamiento exacto más
adelante).
Cuando el browser “dibuja” elementos de acuerdo al normal flow, puede trabajar en dos
“contextos” de dibujo: si está dibujando block-level boxes trabaja en un contexto de
dibujo de bloques, llamado block formatting context. Si en cambio está dibujando inline-
level boxes trabaja en un contexto orientado a líneas, que se llama inline formatting
context.
En este contexto de dibujo el browser dibuja las boxes una después de la otra,
verticalmente, comenzando desde el extremo superior del containing block.
4px)
4px
En este contexto de dibujo el browser dibuja las boxes una después de la otra construyendo
una línea. Comienza a constituir la línea desde el extremo superior del containing block.
Cuando los márgenes horizontales entre dos boxes adyacentes se tocan, CSS no
aplica margin collapse.
8px
Se denomina line box al área rectangular que contiene a las inline-level boxes que
constituyen una línea.
line box
Cuando una inline-level-box excede el ancho de una line box, la misma es dividida en
varias inline-level-boxes y las mismas se distribuyen en varias line boxes:
El browser crea line boxes a medida que es necesario para ubicar contenido inline-
level.
Algo que no muchos saben es que CSS nos permite modificar a gusto la forma en que se va
a dibujar cualquier elemento HTML. Podemos convertir un elemento block-level en inline-
level y viceversa.