Estilos Avanzados
Algunas propiedades de css que se pueden utilizar para agregar estilos más avanzados son
Contenedores / Elementos
Desbordamiento
Cuando un elemento tiene un tamaño fijo, y su contenido es más grande que dicho tamaño, se genera un desbordamiento y el contenido se muestra por fuera del contenedor.
Si no es posible ajustar el tamaño del contenido para que se ajuste al contenedor, se puede usar la propiedad overflow
y cambiar este comportamiento.
hidden
con este valor, el contenido que se desborda no se muestra.scroll
con este valor, se agregan barras de desplazamiento en el contenedor, y el contenido desbordado se oculta.auto
con este valor se agregan barras de desplazamiento según sean necesarias.
Sombra
Se pueden agregar sombras a cualquier elemento utilizando la propiedad box-shadow
con los siguientes valores:
- Posición de la sombra
- Desplazamiento a la Derecha
- Desplazamiento hacia abajo
- Radio de Difuminación
- Radio de Propagación
- Opacidad
- Color
Para agregar sombras pueden usar generadores de sombras online.
Opacity
La propiedad opacity nos permite convertir un elemento y TODO su contenido en un elemento con transparencia, de esta forma opaca un poco el elemento.
Su valor es un número ente 0 y 1, donde 0 lo convierte completamente transparente y 1 es completamente visible.
visibility
La propiedad visibility permite convertir un elemento y su contenido completamente transparente con el valor hidden
. Es similar a usar opacity: 0;
Fuentes y Texto
Spacing
Se puede cambiar el espacio del texto en diferentes formas:
letter-spacing
: Espacio entre letras.word-spacing
: Espacio entre palabras.text-indent
: Identación de textos.line-height
: Espacio entre lineas.
Fuentes Adicionales
Se pueden añadir fuentes a una página web importando los archivos de fuentes (ttf, otf, woff) usando la regla @font-face
.
O importando la fuente desde internet con la regla @import(*url*)
Columnas de Texto
Usando las propiedades column-*
se pueden generar columnas de texto.
Online CSS Multi Column Generator
Desbordamiento de Texto
En algunos casos el texto es muy grande para un contenedor, por lo que pues desbordarse, en ese tipo de situaciones se pueden adoptar diferentes estrategias:
overflow-wrap: break-word
; Permite romper las palabras largas para evitar desbordamiento de texto.
text-overflow: ellipsis;
Permite agregar puntos suspensivos y ocultar el texto que se está desbordando. En este caso se debe forzar a no admitir más lineas de texto de la siguiente forma:
1 | .ver-mas { |
white-space
:
Sombra en el Texto
Se pueden agregar sombras al texto utilizando la propiedad text-shadow
, esta propiedad utiliza diferentes valores:
- Desplazamiento a la Derecha
- Desplazamiento hacia abajo
- Difuminación
- Opacidad
- Color
Existen varias páginas en internet que nos permiten generar sombras fácilmente.
Online Text Shadow CSS Generator
Listas
Los estilos de una lista se pueden definir con las propiedades list-style-*
- list-style-type
- list-style-image
- list-style-position.
Counters
Los counters con contadores que se pueden agregan a cualquier elemento con el pseudo-elemento ::before, con estos counter podemos agregar numeración a diferentes elementos, como secciones, titulos o para agregar una sub-numeración en listas anidadas.
1 | ol.nested-list, |
Custom List Number Styling | CSS-Tricks
counter-increment | CSS-Tricks
Striped Style
Se pueden usar las pseudoclases :nth-child(odd) y :nth-child(even) para agregar un estilo de interlineado en las listas.
1 | .striped-list li:nth-child(odd){ |
Tablas
Layout
Inicialmente las tablas ajustan su tamaño y el tamaño de sus columnas a su contenido, con la propiedad table-layout: fixed;
todas las columnas ocupan el mismo ancho, para tal fin deben tener un ancho (width
) específico.
Filas y Columnas Extendidas
Se pueden extender las celdas de una tabla a lo largo de varias filas y/o varias columnas son atrbutos de html.
Para extender una celda a lo largo de n
filas usamos el atributo rowspan
, indicando la cantidad de filas a extender.
- Dado que la celda se extiende, las siguientes filas deberán tener una celda menos.
Podemos extender una celda a lo largo de n
columnas con el atributo colspan
, indicando la cantidad de columnas a extender.
- Dado que la celda se extiende, en la misma fila se deberán reducir las celdas.
1 | <table class="borde-celdas"> |
Tutorial HTML: Tablas con Colspan y Rowspan
Bordes
Desde html:5 las tablas no tienen el atributo de borde, por lo que para agregar bordes a una tabla se debe hacer por medio de estilos. Para ésto existen diferentes propiedades que nos permiten modificar los estilos de las tablas
Border-collapse
separación entre los bordes de las celdas, por defecto estas están separadas, modificando esta propiedad podemos unir los bordes de cada celda.Border-spacing
Cuando nuestro borde está separado, podemos personalizar la distancia con la que se separan las celdas con la propiedadborder-spacing
, indicando el tamaño de esta distancia:
1 | .borde-contorno { |
A Complete Guide to the Table Element | CSS-Tricks
Striped Tables
Se pueden usar las pseudoclases :nth-child(odd) y :nth-child(even) para agregar un estilo de interlineado en las tablas.
1 | .striped-table tr:nth-child(even) { |
Generador de Tablas
HTML Table Styler 📅 CSS Generator
Hipervinculos
Para cambiar los estilos de los links, se pueden cambiar las propiedades text-decoration
y color
, en cada uno de sus estados.
1 | .normal-link { |
Hipervinculos con contenido
Los hipervinculos son utilizados en muchas partes de una página web, ya sea para hacer referencia a enlaces externos o recursos internos, se pueden configurar los hipervinculos para que cualquier elemento sea comporte como un hipervinculo, solamente se deben agregar dichos elementos dentro de la etiqueta a. Adicionalmente se puede configurar los estilos de los links para cambiar su apariencia.
1 | <a href="#" title=""> |
1 | a { |
Hipervinculos Externos
Cuando se agrega un hipervinculo que hace referencia a un recurso de la web, se suele configurar para que abra en una nueva pestaña, en este caso se deben agregar los atributos de html:
1 | <a href="https://google.com" target="_blank" rel="noopener noreferrer nofollow"> |
Go-to-top
Go to top es un recurso para agregar un botón que devuelve una página a la parte superior.
1 | <a href="#" class="go-top"> |
1 | html { |
Cursor
Css permite cambiar el tipo de cursor (figura del mouse) que se muestra cuando el mouse está sobre un elemento usando la propiedad cursor
pointer
: Muestra el mouse con el simbolo de elemento clickeable (usualmente una mano)help
: Muestra el simbolo de ayudaprogress
: Muestra el mouse con el simbolo de cargando.wait
: Muestra el simbolo de espera.none
: No muestra mouse.
La propiedad cursor se puede agregar a cualquier elemento.
Imagenes
6 simple CSS tricks for images - GoDaddy Blog
Tamaños
Las imagenes tienen por defecto el tamaño en pixeles de la imagen que se está cargando a la página, este tamaño lo podemos cambiar usando las propiedades width
y height
.
Sin embargo, si no se mantiene la proporción de la magen, ésta se estira o se encoje según los nuevos valores, para evitar esta perdida de proporcion se sugiere:
- Definir un tamaño de alto (height) automático, en las páginas web generalmente se limita más el ancho de los elementos que el alto, pues el ancho de la pantalla es generalmente fijo mientras que el alto se puede alargar y realizar scroll vertical.
Se considera mala practica generar scroll horizontal. a excepción de que se utilice para cambiar de recurso, como un carrusel de imagenes.
- Si el tamaño debe ser fijo según el diseño, se puede ajustar la proporcion de la imagen con la propiedad
object-fit
:cover
con este valor la imagen se recortará lo necesario con la finalidad de ocupar el tamaño establecido y manteniendo la relación del aspecto de la imagen misma.contain
con este valor la imagen mantiene su relación de aspecto dentro del tamaño establecido, en este caso se agrega un espacio vacio donde sea necesario con el color de fondo del elemento.
En cualquier caso, se puede reacomodar la imagen dentro del tamaño especificado usando la propiedad object-position
Desbordamiento
En caso de que una imagen se desborde por su tamaño, se puede agregar un limite de ancho que permita a la imagen escalar según el tamaño de la pantalla.
1 | img { |
Thumnails
Se pueden diseñar miniaturas de imagenes agregando paddings y un borde suave
1 | img { |
Imagenes y links
Se suelen usar imagenes como hipervinculos, ya sea usando iconos de redes sociales, logotipos de empresas, fotos de productos, etc, para ello basta con agregar la imagen como contenido del hipervinculo.
Por otra parte, se puede configurar un hipervinculo con referencia a una imagen para visualizarla en el navegador.
1 | <a href="./images/myImage.jpg" title="my Image"> |
Filtros
Usando css se pueden agregar filtros a imagenes para lograr diversos efectos visuales, estos se agregan usando la propiedad filter:
y cada filtro corresponde a una función en particular donde su valor varía según el caso.
blur(5px)
: Se utiliza para desenfocar una imagen, usualmente admite tamaños diferentes a porcentaje.grayscale(50%)
: Se utiliza para convertir una imagen a escala de grises, admite porcentajes, donde 100% es completamente en escala de grises.opacity(80%):
Aplica transparencia a las muestras, admite porcentajes donde 0% es completamente transparente. Este filtro es similar a aplicar la propiedad opacity, sin embargo algunos navegadores proporcionan aceleración de hardware para un mejor rendimiento.
Esta propiedad admite diferentes filtros separados por espacio.
Texto sorbre imagenes
Se pueden utilizar las imagenes (etiquetas img) como fondo y escribir texto sobre la imagen, combinando las propiedades de position relative-absolute y flexbox.
1 | <div class="banner"> |
1 | .banner { |
Fondos
Parallax Efect
Usando css puro se puede generar un efecto parallax, usando las siguientes propiedades de background en el contenedor donde se desea aplicar este efecto.
1 | .parallax { |
Estos estilos se le pueden aplicar a cualquier elemento html, usualmente a un contenedor que ocupe todo el ancho de la pantalla (viewport)
Colores Translucidos
Todos los elementos de HTML tienen fondos transparentes, ésto les permite mostrar el fondo que tenga sus contenedores.
Si se desea agregar colores translucidos usando el sistema rgba. Lo cual es una combinación del código rgb de colores y un *alpha* de transparencia, el cuál es un porcentaje donde 100% o 1 es completamente visible y 0% o 0 es completamente transparente.
1 | .fondo-translucido { |
Gradiantes
Con las propiedades de background-image, es posible generar un fondo con distintos colores en forma de gradiante.
Filtro de Fondo
Usualmente se puede usar los grandiantes junto con las imagnes para agregar una capa de colores sobre la imagen del fondo, para este caso en el gradiante se utilizan colores translucidos para no tapar por completo la imagen.
1 | .fondo-filtro { |
img vs background-image
Para agregar una imagen de fondo se puede usar la propiedad background-image
o usar la etiqueta <img>
dentro de un contenedor y combinar las propiedades de position. Para determinar cuál opción usar, se puede tener en cuenta los siguientes criterios:
- La imagen se podrá ver cuando un usuario desee impirmir la página.
- Cuando la imagen tiene un importante significado semántico, tal como un icono de advertencia. (Usar
alt
) - Cuando desea que la imagen sea accesible para los usuarios.
- Tiene más capacidad de filtros usando la propiedad
filter
, así mismo mejora el rendimiento al momento de crear animaciones sobre el fondo. - Permite la implementacion de carga lenta (laizy load) para mejorar el rendimiento de la página cuando hay muchas imagenes.
background-image
- La imagen no se mostrará si el usuario impirme la página.
- Cuando la imagen es meramente decorativa y no tiene significado dentro de la página.
- Se desea agregar un efecto parallax dentro de la página.
- Permite crear efectos de fondo cambiante fácilmente usando animaciones, sin embargo no tienen un buen rendimiento al usar filtros.
- Si es necesario mejorar los tiempos de descarga. (1)
*(1) Los archivos* las imagenes pueden pasar por un proceso de optimización (reducción y compresión) para mejorar el rendimiento de carga.
¿Cuándo se debería usar img y cuando background-image?
Calculos en CSS
Css permite realizar calculos matemáticos entre diferentes unidades de medida para poder establecer un tamaño, estos calculos pueden ser resueltos usando la función calc()
, cada tamaño que se vaya a operar debe ir acompañado de su unidad de medida.
1 | .contenedor { |
A Complete Guide to calc() in CSS | CSS-Tricks
Variables
Css permite el uso de variables dentro de las hojas de estilos, estas variables pueden almacenar cualquier tipo de valor, sin embargo de debe tener cuidado de implementarlas en los lugares adecuados.
El uso de variables de css permite crear un sistema de diseño dentro de css, con lo cual, si se toman desciciones de diseño como el sistema de colores o de tamaños, se podrán modificar los valores de estas variables, y automaticamente toda la página adoptará estos nuevos valores.
Creación de variables
Las variables de css pueden utilizarse a nivel global de todo el documento, o a nivel local de algunos selectores con alcance a los descendientes de estos.
Para crear una variable de css se deben definir dentro de la pseudoclase :root
y se deben nombrar comenzando por —nombre-variable
1 | :root { |
Implementacion de variables
Para usar las variables en alguna propiedad, se debe utilizar la función var(--nombre-variable)
1 | body { |