Las hojas de estilo o CSS son un estandar de la W3C para aplicar distintos estilos, formatos y caracteristicas a los documentos como HTML.
En la practica son ficheros de texto en los que se van definiendo propiedades concretas para los elementos de una página. Esto ahorra espacio y trabajo en el desarrollo de la misma.
Ademas de añadir estilos desde CSS, también podemos hacerlo desde HTML.
Hoy en dia esta técnica esta casi obsoleta, ya que sobre carga el código HTML dificultando su lectura.
Para llevar acabo esta practica usaremos la etiqueta style, la podemos usar como atributo a cualquier elemento o en el head de nuestra página para añadir los estilos.
Esta técnica es la más usada, ya que es conveniente usar una hoja de estilos definida externamente al HTML, para enlazarla con este, usaremos la etiqueta link, esta la definiremos en el head de nuesta página.
Cuando queremos aplicar estilos diferentes a distintos parrafos, podemos usar en los elementos HTML el atributo class, Con esto establecemos una clase a ese elemento.
Para poder dar uso en CSS a estas clases dentro de documento CSS debemos usar un punto delante el nombre que le hayamos puesto en el elemento a la clase.
En la partica el resultado seria este:
Cada elemento en nuestra pagina web, podemos identificarlo con un id, un ejemplo practico es cuando tenemos varios parrafos y queremos darle un estilo concreto a alguno de ellos.
Para usamos el atributo id, en CSS lo utilizaremos con una # seguido del nombre de esa id para darle estilos.
En la partica el resultado seria este:
Las Pseudo-Clases van un poco más allá de los estilos y permiten controlar elementos circunstanciales de la pagina HTML.
Las palabras :hover, :visited, :link, :active son pseudoclases que se pueden añadir a los estilos para controlar esas circunstancias.
Encontramos varios tipos de estas Pseudoclases.
Estas pseudo-clases se utilizan para controlar ciertas circunstancias, como por ejemplo aclarar que un enlace ya se ha visitado en la página o que esté inactivo o incluso dar estilo a un elemento cuanto el puntero del ratón se sitúe encima del elemento.
Aparte de lo nombrado anteriormente existen otros tipos de elementos:
Un ejemplo:
Como su propio nombre indica, estas se usan para remarcar el estado de un elemento de formulario, como por ejemplo si el elemento está desactivado o activado.
Además, hay otros tipos como:
Un ejemplo:
Para este apartado tenemos dos tipos:
Un ejemplo:
Controlan los elementos hijos de un elemento padre html. Tenemos varios tipos:
Un ejemplo:
Se utiliza cuando tenemos que seleccionar un elemento y tiene que ser con la etiqueta que digamos.
Tenemos varios tipos:
Un ejemplo:
Encontramos un solo tipo:
Un ejemplo:
Desde CSS3 ya se pueden aplicar estilo a los atributos de las etiquetas.
Esto da opción a utilizar tanto los atributos como incluso los valores que tienen esos atributos para aplicar los estilos que queramos.
Poniendo la práctica, este sera un ejemplo:
Esto es un enlace a Google
Como vemos su expresión es sencilla, colocamos en CSS el elemento, id o clase y entre corchetes el atributo al que queramos darle estilo.
FLEX y GRID son dos nuevos valores (HTML5) que vamos a poder dar a la propiedad CSS display y que nos van a permitir, junto con otras propiedades, maquetar nuestras páginas web de una manera más fácil a la que se usaba tradicionalmente.
Vamos a tener dos elementos:
Lo primero que hay que hacer es darle un valor a la propiedad DISPLAY del contenedor. Existen dos valores posibles:
Contenedor: es el elemento padre que tendrá en su interior cada uno de los ítems flexibles.
En Flex establecemos las propiedades al elemento padre y se modificará la posición de los elementos flexibles dentro de él.
Ítems: cada uno de los hijos flexibles que tendrá dentro el contenedor en su interior.
Las cajas flexibles son los ítems o hijos directos del contenedor, el contenedor es el contexto al que pertenecen los ítems.
Elementos considerados flexibles dentro de un contenedor display:flex:
Como ya hemos visto anteriormente, existen 2 ejes para colocar los elementos:
Utilizando la propiedad FLEX-DIRECTION podemos modificar la dirección del eje principal del contenedor para que se oriente en horizontal (por defecto) o en vertical. Los cuatro posibles valores son:
Se realiza con la propiedad FLEX-WRAP.
FLEX-FLOW (juntando la dirección y el ajuste)
flex-flow: flex-direction flex-wrap;
JUSTIFY-CONTENT: se utiliza para alinear los ítems del eje principal (por defecto, el horizontal).
Los posibles valores son:
ALIGN-ITEMS: usada para alinear los ítems del eje secundario (por defecto el vertical).
Alineación vertical cuando hay varias líneas. ALIGN-CONTENT
Permite modificar el orden normal en el que se van a mostrar los elementos flexibles añadiendoles la propiedad CSS ORDER. Solo afecta a la representación visual de los elementos.
A diferencia del resto de propiedades, ésta si se le aplica al elemento flexible. Puede tomar cualquier valor entero y su valor por defecto es el 0.
Los elementos estarán dispuestos en orden ascendente según el valor de order. En caso de empate el que estuviera antes en el código.
Propiedades que permiten modificar el tamaño de los elementos flexibles.
Desde el contenedor FLEX, si queremos que un elemento tenga alineación propia ALIGN-SELF. Se le añade esta propiedad al elemento flexible en cuestión.
ALIGN-ITEMS lo utilizábamos para la alineación vertical de todos los elementos flexibles a la vez.
Sobreescribe a ALIGN-ITEMS.
Las transiciones son uno de los efectos más utilizados hasta ahora, y hace rivalidad a la pseudoclase hover. Las transiciones permiten aplicar estilos diferentes entre estados de una manera más amplia.
Una de las ventajas de usar transiciones es que se puede utilizar una medida de tiempo a través de la cual se aplica el cambio de estilo.
Hay varios elementos que componen la transición:
Cada uno de estos valores se puede especificar en las siguientes propiedades:
Es posible también aplicar diferentes transiciones en momentos de tiempo distintos simplemente creando una lista en las propiedades transition-property y transition-duration.
Las transformaciones son mecanismos relativamente simples ya que no hacen sino aplicar un cambio de estilo gradual, pero los estilos siguen siendo los estilos conocidos hasta ahora.
Podemos aplicar las transiciones de la siguiente manera:
Además de estas transformaciones que se basan en el eje central existen otras. Mediante la propiedad transform-origin se puede cambiar ese punto con dos valores que modifican el cambio en el eje horizontal y vertical.
También existen transformaciones 3D, estas ofrecen todo un mundo de posibilidades. En este caso es bastante probable que les afecte las limitaciones de los dispositivos donde se ejecuten, ya que los requerimientos de la tecnología 3D son elevados.
Las animaciones que introduce CSS3 se basan en el sistema de keyframes, algo que debería resultar familiar a Flash. En ese tipo de herramientas se contaba con líneas temporales donde se iban aplicando distintas transformaciones.
Para aplicar esto usaremos la etiqueta animation y al igual que las anteriores nombradas, esta de desglosa en otras más concretas:
Las Media Queries son un mecanismo introducido en CSS3 que permiten aplicar estilos según el tipo de medio en el que se muestran los documentos. A través del selector @media y aplicando distintas condiciones como el ancho del medio, colores, etc.
Hay que tener en cuenta el amplio abanico de pantallas, que van desde 4 hasta 42 pulgadas.
La etiqueta media reconocen varios tipos de medios predefinidos, al margen de sus propiedades, estas son:
Además del ancho existen una gran variedad de condiciones para aplicar determinado tipo de estilos a un documento.
Entres las diferentes condiciones, las encontramos de forma genérica, como mínimos o como máximos y otras muchas más, a continuación vamos a nombrar algunas de ellas:
Al igual que en los lenguajes de programación, las media queries permiten el uso de expresiones similares a las usadas para crear expresiones condicionales.
Tenemos varios tipos:
Es un sistema de maquetación considerado más potente que flexbox ya que permite trabajar con filas y columnas y no en una dimensión como hace flexbox.
Se compone de dos elementos:
Es necesario crear la estructura del grid especificando cuántas columnas y filas va a tener el contenedor. Para ello:
1.- Dar al contenedor grid la propiedad Display: Grid/Inline-grid.
2.- Aplicar la estructura al contenedor:
Los elementos se colocan solos pero también podemos colocarlos.Para especificar el área a ocupar el elemento (hijo directo) utilizamos las siguientes propiedades:
Se pueden juntar estas propiedades:
Si no queremos especificar el tamaño para cada elemento del GRID podemos darles nombre a su propiedad grid-area y usar esos nombres en la propiedad grid-tamplate-area.
Etiquetas:
Para alinear horizontalmente el contenido que hay dentro de cada celda se usará la propiedad CSS JUSTIFY-ITEMS. Valores: stretch por defecto
Para alinear verticalmente el contenido que hay dentro de cada celda se usará la propiedad CSS ALIGN-ITEMS. Valores:
Se pueden juntar las dos alineaciones anteriores con la propiedad PLACE-ITEMS. place-item: vertical horizonta
En el caso de que queramos que uno de los ítems hijos tengan una distribución diferente al resto, aplicamos la propiedad JUSTIFY-SELF o ALIGN-SELF sobre el ítem hijo y esto sobreescribe su distribución.
En el caso de que el GRID no ocupe todo el ancho de la página podemos distribuirlo con las propiedades CSS JUSTIFY-CONTENT (horizontal) y ALIGN-CONTENT (vertical).
La colocación implícita de los elementos GRID es lo que sucede cuando colocamos elementos grid fuera de la estructura que se ha definido en el contenedor grid o cuando no les damos posición.
Propiedades aplicamos al contenedor: