Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.2.-ETIQUETAS
• <article> La finalidad de esta etiqueta es la marca de un artículo. Hay que tener
en cuenta que, normalmente, se tratará de un texto que se puede leer con
independencia del resto del contenido de la página en cuestión.
• <aside> Lo que hace <aside> es marcar un elemento como accesorio del
contenido principal de la página. Como ejemplos, están el de los comentarios
que realicen los usuarios, una barra lateral, y muchos otros.
• <header> La etiqueta <header> es muy práctica para ofrecer información sobre
el encabezado del elemento que lo contiene. Aunque se utiliza mucho como
introducción, esta etiqueta no necesariamente será una sola en la Web. Es
decir, pueden existir etiquetas <header> para un artículo concreto, para un
texto, para una columna en el lateral de la Web, etc.
PROGRAMACIÓN WEB| Dania Lima Cabezas
Desde ese contenedor vamos a poder especificar la alineación de los elementos que
hay dentro, el tamaño de los elementos que contienen y distribuir el espacio restante
que hay entre los elementos del contenedor Flex, y todo esto en una sola dirección, ya
sea una horizontal o vertical. Es decir, podemos distribuir los elementos que contiene
la etiqueta sin poner nada dentro de esos elementos.
Flex a nivel visual
Vamos a ver dos ejemplos para ver cómo funciona de verdad:
Ambos son contenedores Flex, el primero es un contenedor Flex a nivel horizontal que
contiene tres elementos flexibles, el segundo es un contenedor Flex a nivel vertical que
contiene tres elementos flexibles.
Únicamente dando propiedades al contenedor Flex podemos alinear todos los
elementos que están dentro del mismo.
Aspectos a tener en cuenta
Hay ciertas cosas con las que tener cuidado, como por ejemplo que a día de hoy no
todos los navegadores soportan contenedores Flex. Aunque es cierto que la gran
mayoría de los navegadores que usamos diariamente ya lo soportan, no obstante hay
que tener cuidado porque no todos los navegadores de los móviles lo soportan.
1.3.2.-Propiedades Flex
1.- Propiedad flex-direction
PROGRAMACIÓN WEB| Dania Lima Cabezas
Esta propiedad nos sirve para definir la dirección del flujo de colocación de los
elementos. Tiene que ver con los ejes que conocimos en el artículo anterior, pudiendo
marcar si los elementos se van a colocar todos en la misma fila, o si se van a colocar en
una columna, pero además también permite indicar el orden de los item, normal o
reverso.
Permite usar estos valores:
• row (valor predeterminado): Indica que los elementos se colocan en una fila,
uno al lado del otro, de izquierda a derecha.
• row-reverse: se colocan en una fila, pero con orden de derecha a izquierda.
• column: se colocan uno debajo del otro, en orden los primeros arriba.
• column-reverse: se colocan en una columna, pero los primeros aparecerán
abajo.
2.- Propiedad flex-wrap
Sirve para indicar si queremos que haya saltos de línea en los elementos que se
colocan en el contenedor, si es que éstos no caben en el espacio disponible.
Esta propiedad es muy similar a la propiedad anterior, justify-content, solo que ahora
estamos alineando con respecto al eje secundario y no el principal.
En el caso de un contenedor flex cuyo eje principal está en la horizontal, entonces
align-items servirá para obtener el alineamiento en el otro eje (vertical, de arriba a
abajo). En definitiva, align-items nos ofrece el tan deseado alineamiento vertical que
hemos echado en falta en CSS históricamente.
También merece hacer ejemplos específicos para verlo con más detalle, por lo que
ahora nos limitaremos a enumerar sus posibles valores con una breve descripción.
• flex-start: indica que se posicionarán al comienzo del eje secundario.
• flex-end: se posicionarán al final del eje secundario.
• center: se posicionarán en el centro del eje secundario.
PROGRAMACIÓN WEB| Dania Lima Cabezas
• stretch: ocuparán el tamaño total del eje secundario (a no ser que hayamos
marcado que esos elementos tengan un tamaño diferente).
• baseline: para el posicionamiento de los elementos se tendrá en cuenta el texto
que hay escrito dentro.
Como una imagen vale más que mil palabras, se pueden ver aquí los distintos efectos
con bastante claridad.
• flex-start: indica que las filas se colocarán todas pegadas entre sí (obviamente
no aparecerán exactamente pegadas si le hemos colocado un margin), desde el
inicio del eje secundario.
• flex-end: las filas se colocarán pegadas entre sí, pero esta vez pegadas al final
del eje secundario.
• center: se posicionarán en el centro del eje secundario, pegadas entre sí.
• stretch: Sus dimensiones crecerán para ocupar todo el espacio disponible (a no
ser que se haya colocado una dimensión diferente en los elementos).
• space-between: indica que las filas se separarán entre sí, dejando un espacio
proporcional entre ellas.
• space-around: indica que las filas se separarán, dejando un espacio entre ellas
proporcional, también con el borde.
Creo que se entenderá mejor a la vista de la siguiente imagen.
PROGRAMACIÓN WEB| Dania Lima Cabezas
PROGRAMACIÓN WEB| Dania Lima Cabezas
Veamos las propiedades que puedes poner a los hijos de los contenedores Flexbox
para alterar su disposición.
Ahora vamos a aprender cosas que tienen que ver con los ítem, es decir los hijos
directos de los contenedores que se comportan bajo el estándar Flexbox. Veremos las
propiedades o atributos que se pueden aplicar a los hijos, junto con descripciones y
ejemplos. Son menos que las que se pueden aplicar a los contenedores, así que te será
más fácil de acordarte de todo.
Quizás resulta obvio, pero no está de más recordar a qué nos referimos con
contenedores e ítems. Quedará claro a la vista de esta imagen:
1.3.3.1.-Propiedad flex-grow
La propiedad flex-grow sirve para decir cómo deben crecer los elementos incluidos en
el contenedor, es decir, cómo distribuir el espacio entre ellos, haciendo que ocupen
más o menos espacio. El valor que acepta es numérico e indica la proporción de
espacio que va a ocupar.
A mi me resulta la más útil de todas las propiedades de los ítem, que además es
bastante versátil. El ejemplo más típico para poder entender flex-grow lo podemos ver
en el siguiente ejemplo:
1.3.3.2.-Propiedad order
PROGRAMACIÓN WEB| Dania Lima Cabezas
1.3.3.3.-Propiedad flex-shrink
Sirve para indicar que ciertos ítems deben encoger su tamaño. El valor
predeterminado de flex-shrink es de 1. Cualquier valor superior indica que ese
elemento se encogerá con respecto a lo que ocuparía si no tuviera esa propiedad. A
mayor valor de flex-shrink, más reducido será el tamaño resultante del elemento.
1.3.3.4.-Propiedad flex-basis
Esta propiedad sirve para modificar las dimensiones de los elementos atendiendo a
varias posibilidades. La propiedad sobre el papel sirve para definir el tamaño
predeterminado de un elemento, pero antes de que el espacio sobrante sea
distribuido, cuando proceda, por causa de otras propiedades como flex-grow.
Los valores que soporta son los siguientes:
• Numéro, unidad CSS o porcentaje: lo que indica las dimensiones iniciales del
elemento, antes de otorgar espacio sobrante.
• auto: es el valor predeterminado e indica que flex-basis no va a tener efecto,
otorgando dimensionamiento en función de cualquier otro atributo que pueda
haber en el elemento, o en función del contenido del propio elemento.
Nota: flex-bases es una propiedad menos obvia que otras conocidas anteriormente.
Sabemos que las dimensiones de los elementos se pueden modificar directamente con
width y height, que también tenemos flex-grow para otorgar más espacio y flex-shrink
para encoger los elementos. Quizás pensarás que cuesta encajar este nuevo atributo,
pero la clave es que permite indicar unas veces la anchura y otras la altura, en función
PROGRAMACIÓN WEB| Dania Lima Cabezas
del eje principal de los elementos flexbox definido en el contenedor. Cuando el eje
está en la horizontal, flex-basis aplica a la anchura de los elementos. Cuando el eje está
en la vertical, entonces flex-basis aplica a la altura de los elementos.
1.3.3.5.-Propiedad flex
Esta no agrega nada nuevo. Es solo un atajo para escribir en una sola línea de código
CSS las propiedades flex-grow, flex-shrink y flex-basis. El valor por defecto de esta
propiedad es "0 1 auto".
1.4.-Conclusión
Con este resumen hemos conocido ya todas las propiedades que afectan a los ítems,
que junto con las propiedades que afectan a los contenedores repasadas en la anterior
entrega del manual, componen todo el material que debes conocer del estándar CSS
Flexbox.
Ahora nos queda practicar bastante, revisando ejemplos completos en las siguientes
entregas, con los que dominar Flexbox con casos reales y útiles en el día a día.
1.5.-Propiedad grid
1. grid-template-rows
2. grid-template-columns
3. grid-template-areas
de la cuadrícula. Puede encontrar una buena descripción general de las cuadrículas más
1.6.-Diseño response
Es fundamental tener una página web responsive, es decir, optimizada para todo tipo
de dispositivo. De manera general podemos distinguir dos formas de
optimización: “Responsive Web Design” y “Mobile First Web”.
¿En qué se diferencian Responsive Web Design y Mobile First Web?
Aunque van de la mano, hay que diferenciar entre Responsive Web Design o, lo que
viene a ser lo mismo, Diseño Web Adaptativo, y Mobile First Web. Como su propio
PROGRAMACIÓN WEB| Dania Lima Cabezas
Si no te ha quedado muy claro, las Media Queries son un módulo de CSS que sirve
para detectar el tipo de dispositivo por el que se está navegando; de esa manera el
contenido consigue adaptarse al dispositivo concreto a través de las distintas
condiciones que tú mismo asignas, como pueden ser ancho y alto de la ventana del
navegador, ancho y alto del dispositivo, la resolución del dispositivo o la orientación de
la pantalla. Son declaraciones lógicas que actúan dependiendo de las condiciones
específicas que tú mismo declaras en la hoja de estilos. Si la premisa se cumple, se
aplicaran los estilos definidos; si no, los omitirá por completo.
Hay dos formas de implementarlas:
La primera opción para poner en funcionamiento las Media Queries es a través del
atributo media de la etiqueta <link>. Como sabemos, esta etiqueta es la que se usa
para enlazar una hoja de estilo con un documento HTML. En ese enlace
podemos especificar condiciones que deben cumplirse para que los estilos enlazados
se apliquen. Debería ir dentro del <head> de nuestro HTML.
Recuerda que la etiqueta <link> tiene esta forma:
<link rel="stylesheet" href="estilos.css">
Pues ahora simplemente agregamos el atributo media indicando la condición que se
debe cumplir para que estos estilos se apliquen:
<link rel="stylesheet" media="only screen and (max-width: 768px)" href="estilos.css">
Cargar de esta manera las Media Queries supone un problema, y es que cada vez que
queramos cargar diferentes estilos dependiendo de ciertas condiciones que queramos
aplicar para distintos dispositivos, tendríamos que cargar una hoja de estilos nueva.
Esto conlleva una carga más lenta de tu sitio web, ya que se hacen solicitudes HTTP
adicionales, que se podrían evitar.
Hay otro sistema más recomendable para aplicar las Media Queries: basta con incluir
todas las condiciones necesarias dentro de un único archivo
CSS. Así, incorporaríamos la construcción @media seguido de las condiciones que
queremos definir para cada tipo de dispositivo y donde se apliquen entre llaves { } los
estilos concretos para cada uno de ellos. Es la manera más aconsejable, ya que la carga
es de un único archivo CSS.
La forma de incluir Media Queries dentro de la hoja de estilos CSS es la siguiente:
@media (max-width:320px){
<!—- Aquí van todos los estilos CSS -->
}
Esta Media Query se ejecutará sólo cuando la anchura de la ventana del navegador
sea menor de 320 píxeles.
@media (min-width:768px){
<!—- Aquí van todos los estilos CSS -->
}
Esta Media Query se ejecutará sólo cuando la anchura de la ventana del navegador
sea mayor de 768 píxeles.
PROGRAMACIÓN WEB| Dania Lima Cabezas
Esto quiere decir que si reducimos el ancho del navegador, seguirá mostrándose de la
misma manera, ya que la resolución de la pantalla seguirá siendo la misma y no se
adaptara al nuevo ancho de la ventana del navegador (es decir, si la pantalla de
nuestro móvil tiene 450 px y el navegador detecta que lo óptimo sería visualizarla con
600 px así lo hará si no usamos la meta-etiqueta Viewport).
En caso de usar los atributos para la resolución de la pantalla, la etiqueta Viewport es
necesaria.
¿Qué hace la meta-etiqueta Viewport?