CSS Avanzado
CSS Avanzado
CSS Avanzado
1. Selectores avanzados
2. Positions
3. Transiciones
4. Transformaciones
5. Animaciones
6. Diseño Responsive
Selectores Avanzados
Pseudoclases
Pseudoclases de enlaces
Son las que tienen en cuenta los comportamientos de los links de nuestra
página.
:link Aplica estilos cuando el enlace no ha sido visitado todavía.
Pseudoclases de formularios
:first-child - :last-child
:nth-child(n) - :nth-last-child(n)
En los casos anteriores tenemos diversos ejemplos de cómo funciona la
pseudoclase :nth-child() donde es posible seleccionar un elemento por su
posición dentro del contenedor, o varios dependiendo de su condición de si es
par o impar o por intervalos definidos.
En este caso si bien funcionan igual que las anteriores, no importa el resto de
etiquetas dentro del contenedor padre, va a realizar las selecciones tomando
en cuenta la cantidad y orden de etiquetas del mismo tipo.
:first-of-type Primer elemento hijo del mismo tipo.
:first-of-type - :last-of-type
Tal como muestra la imágen, no importa que otras etiquetas hay dentro del
contenedor, con :first-of-type o :last-of-type estaremos seleccionado por el
tipo de etiqueta, en este caso el segundo elemento y el sexto elemento.
:nth-of-type() - :nth-last-of-type()
Del mismo modo, en este caso las selecciones se van a centrar en el tipo de
etiqueta, su cantidad y orden dentro del contenedor, sin importar que otras
etiquetas de distinto tipo existan en el mismo.
Pseudoelementos
Position Relative
Position Fixed
Hace que la caja esté posicionada con respecto a la ventana del navegador, lo
que significa que se mantendrá en el mismo lugar incluso al hacer scroll en la
página.
Position Sticky
Las cajas con este valor se posicionan según el estado de desplazamiento del
usuario. Se "pega" en su lugar al igual que con position fixed, pero solo
después de llegar a ese elemento en flujo de la página. Una vez que eso
sucede, la caja se pega y nos acompaña con el scroll hasta el final de su
contenedor.
Transiciones
Las transiciones permiten cambiar los valores de las propiedades (de un valor a
otro), durante una duración determinada.
Propiedades de Transition
Otro punto importante, es que si bien el efecto trabaja sobre el ancho de la caja
podemos afectar diversas propiedades con una transición. Para aplicar el
mismo efecto a todas en lugar de colocar width tendríamos que poner all y en
caso que queramos afectar varias propiedades pero con distintos valores de
transition, entonces podemos utilizar la misma propiedad transition, con cada
declaración separada por comas.
Transformaciones
Propiedad transform
Tipos de transformaciones
Translate
Nos permite trasladar un objeto de un lugar a otro sin modificar su estructura
en el documento (parecido a position relative).
Scale
Rotate
Este valor nos permite sesgar o torcer un elemento desde sus ejes X o Y.
Propiedad animation
@keyframes
Esta regla no se usa dentro de un selector, sino que se declara como una
estructura independiente donde crearemos una secuencia de sucesos
aplicando distintas propiedades en momentos de tiempo y luego usaremos el
nombre asignado a este bloque de código como valor de la propiedad
animation-name que vimos anteriormente.
Cómo time-selector podemos acudir a distintos métodos que nos permitirán
crear nuestra escala de tiempo o secuencia de momentos.
Veamos un ejemplo:
En este caso tenemos una animación llamada agrandar cuyo estado inicial es
un ancho y alto de 100px y un color de fondo orange y su estado final es de
ancho y alto de 500px y color de fondo crimson.
Dada esta animación, luego tenemos que utilizarla en un elemento de nuestro
sitio, para eso la invocamos en la propiedad animation dentro del selector de
ese elemento.
De esta manera logramos animar nuestra caja con la animación agrandar cuyo
tiempo de duración para pasar de 100px a 500px y de orange a crimson será
de 5 segundos, teniendo un avance lineal y que se repetirá de forma infinita.
Otra forma además de from/to para crear nuestras secuencias es indicando los
valores en porcentaje donde se debe modificar una propiedad.
Diseño Responsive
Cada vez es más frecuente acceder a Internet con diferentes tipos de
dispositivos, que a su vez tienen diferentes pantallas y resoluciones, con
distintos tamaños y formas, que hacen que se consuman las páginas webs de
formas diferentes, apareciendo por el camino también diferentes necesidades,
problemas y soluciones.
● Conexión de red
● Tamaño de la pantalla
● Tipos de interacción (pantallas táctiles, track pads)
● Resolución gráfica.
Una vez que ya establecimos la escala que debe mantener nuestro sitio
independientemente de la resolución de la pantalla es que podemos comenzar
a trabajar sobre el diseño responsivo.
Finalmente, para poder tener diseños que se adapten a los distintos tamaños
de pantallas, siempre es recomendable el uso de unidades de medida relativas
como em, rem, porcentajes, vh, vw, entre otras.
Estrategias de diseño
Desktop-first
Por otro lado, la estrategia Desktop-first suele interesar más a los diseñadores
de sitios webs en las que el público objetivo son usuarios de escritorio. Por
ejemplo, una página de una aplicación para PC/Mac o similares, podría ser una
buena opción para la estrategia Desktop-first. En ella, hacemos justo lo
contrario que en la anterior, lo primero que diseñamos es la versión de
escritorio y luego vamos descargando detalles o acomodando información
hasta tener la versión para dispositivos móviles.
Media-queries
Una vez nos adentramos en el mundo del Responsive Design, nos damos
cuenta en que hay situaciones en las que determinados aspectos o
componentes visuales deben aparecer en un tipo de dispositivos, o deben
existir ciertas diferencias.
Para ello, utilizaremos un concepto denominado media queries, con los que
podemos crear ciertas condiciones para que sólo se apliquen a un tipo de
diseño concreto.
Ahora que tenemos una idea básica de lo que es un media query, veamos
cómo funciona realmente esta particular característica de CSS.
Esto significa que los estilos que se escriban dentro de las reglas de media
queries anteriores sólo funcionarán o serán efectivos en las propiedades de
ancho especificadas anteriormente, en este caso desde un mínimo de 900px
en adelante.
El número de bloques de reglas @media que se utilicen depende del
desarrollador web, ya que no es obligatorio utilizar un número concreto. Se
pueden utilizar desde un sólo media query, hasta múltiples de ellos a lo largo
de todo el documento CSS.
Hay dos cosas que debemos tener en cuenta al crear media queries para
diferentes tamaños de pantalla: las propiedades max-width y min-width.
Una vez que la propiedad max-width tiene un valor asignado, todos los estilos
dentro de esa media query particular se aplicarán a cualquier dispositivo cuyo
tamaño de pantalla abarque desde 0px hasta el ancho máximo especificado.
Cabe destacar, que si bien las distintas reglas de media queries pueden pisar a
otras reglas, en los casos donde para un mismo elemento existan propiedades
aplicadas en media queries de distintos tamaños y estos no se pisen, entonces
se complementarán estos estilos hasta que la regla que los define no siga
siendo válida.
Tipos de Medios
Breakpoints
Por otra parte, es posible que en algunos casos necesitemos aplicar reglas de
@media en tamaños poco convencionales debido a que detectamos algún
elemento que no cuadra o se adapta del todo bien en nuestro sitio. Estas
situaciones son completamente normales y no hay una regla estricta que nos
impida realizarlo.