miércoles, 3 de febrero de 2021

👨‍💻 Gradientes en CSS | parte 3 | los degradados radiales.

Imagen 1: Aurora boreal

⏩ Snippet: ⏪
👉 Snippet: CSS me permite crear hermosos fondos con degradados (o gradientes de color) partiendo de un color a otro (u otros), dando una presentación espectacular al documento. En esta lección estudiaremos el uso de los degradados radiales.
Portafolio de temas tratados en esta publicación:
IR A PORTAFOLIO
1.ACLARATORIA

Esta lección es parte complementaria del tema GRADIENTES EN CSS en el sentido que se hace un tratamiento individual de los degradados radiales, para favorecer la riqueza argumentativa que sería imposible hacerlo en la publicación original (parte 1 de la serie) en la cual, originalmente, se incluyó originalmente la explicación de todos los gradientes, repercutiendo en un peso considerable, que afectaba la carga de la página, y el cansancio en la lectura.

De tal manera que esta lección es susceptible de posteriores modificaciones, en virtud de material nuevo que vaya surgiendo en internet, y que pueda contribuir a la ampliación de lo ya desarrollado.

Hecha esta aclaratoria, necesaria, paso de seguido a exponer el material producto de la investigación de este tema, según lo conseguifo hasta el momento.



IR A PORTAFOLIO

5.¿EN QUÉ CONSISTE?

Pasando ahora al tema que nos ocupa, podemos usar todo lo que hemos aprendido hasta ahora y cambiarlo para mostrar degradados radiales, ya que como se dijo al principio, a parte de gradientes lineales, también podemos crear otros tipos de gradientes, como por ejemplo, los gradientes radiales, que permite crear degradados con formas circulares.

La función CSS radial-gradient() crea una imagen () que representa un gradiente (degradado) de colores, generando un radio desde un origen, el centro (center) del gradiente. El resultado de esta función es un objeto de tipo de dato CSS <gradient>.

Los gradientes radiales son definidos por su centro (center), el contorno y posición de la figura resultante y los puntos de definición de color (color stops). El gradiente radial consiste, desde su centro hasta su figura resultante y potencialmente más allá, en figuras concénctricas sucesivas de escala uniforme, idénticas en su figura final. Los stops de color son posicionados en un rayo de gradiente virtual que va horizontalmente desde el centro hacia la derecha. La proporción para posicionar los stops de colores es relativa a la intersección entre la figura final y su rayo de gradiente, representando el 100%. Cada figura es monocolor, y definida por el color del rayo de gradiente al que cruza.

Las figuras resultantes solo pueden ser círculos (circle) o elipses (ellipse).

Como cualquier otro gradiente, un gradiente radial CSS no es un <color> CSS, sino una imagen sin dimensiones intrínsecas, es decir, no tiene un tamaño natural o predefinido, ni radio. Su tamaño concreto coincidirá con el del elemento al que se aplica.

La función radial-gradient no permite gradientes repetidos. Para dicha funcionalidad, use la función CSS

IR A PORTAFOLIO


3. SINTAXIS


Sintaxis

// Definición de la figura
  
  
radial-gradient( circle,)                /* Sinónimo de radial-gradient
                                               (circle farthest-corner, … ) */

radial-gradient( ellipse,)               /* Sinónimo de radial-gradient
                                               ( ellipse farthest-corner, … ) */

radial-gradient( <extent-keyword>,)      /* Dibuja un círculo */

radial-gradient( circle radius,)         /* Un círculo centrado con longitud dada.  
                                               Puede ser un porcentaje */

radial-gradient( ellipse x-axis y-axis,) /* Los dos ejes semi-mayores son indicados, 
                                               horizontal y después vertical */

// Definición de la posición de la figura
radial-gradient ( … at <position>,)

// Definición de los stops de colores
radial-gradient (, <color-stop>,)
radial-gradient (, <color-stop>, <color-stop> )

Sintaxis formal

radial-gradient(
  [ [ circle || <length> ]                         [ at <position> ]? , |
    [ ellipse || [ <length> | <percentage>]{2} ]  [ at <position> ]? , |
    [ [ circle | ellipse ] || <extent-keyword> ]   [ at <position> ]? , |
    at <position> ,
  ]?
  <color-stop> [ , <color-stop> ]+
)
where <extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side
  and <color-stop>     = <color> [ <percentage> | <length> ]?

Nota:
El tipo de dato CSS denota medidas de distancia. Es un valor seguido por una unidad de longitud (px, em, pc, in, mm, …). Al igual que en cualquier dimensión CSS, no debe haber espacio entre la unidad y el número. La unidad de longitud es opcional después del valor 0

IR A PORTAFOLIO

4.APLICACIÓN

Todo lo que necesitas hacer aquí es cambiar la expresión radial-gradient en lugar de linear-gradient y se obtienen acabados como los siguientes:

Gradiente radial

Imagen 6 : Aplicacion del gradiente radial

Pero, tal como se procedió con el tratamiento al gradiente lineal, sumemos conceptos, paso a paso, para comprender adecuadamente el tema; y consideremos el siguiente ejemplo con su respectiva imagen:

  .box {
 background: radial-gradient(#fdbb2d, #22c1c3);    
}
  

Este degradado radial se estira hacia su elemento padre, por lo que este rectángulo termina con un degradado similar a una elipse. Para restringir ese degradado, de modo que siga siendo un círculo independientemente de las proporciones del padre, podemos agregar la palabra clave circle de esta forma:

.box {
 background: radial-gradient(circle, #fdbb2d, #22c1c3);    
}
  

Yendo aún más lejos, también podemos especificar la fuente del degradado circular, para que comience (por ejemplo) en la esquina superior izquierda del padre.


.box {
 background: radial-gradient(circle at top left, #fdbb2d, #22c1c3);    
}
  

El efecto es sutil, pero la diferencia entre este y un degradado lineal simple podría ser justo lo que estás buscando.


IR A PORTAFOLIO

5.VALORES | PARÁMETROS

También tenemos diferentes modalidades para crear gradientes radiales, desde una muy básica donde le indicamos sólo los colores, hasta otra más avanzada donde le damos forma, tamaño e incluso ubicación:

Valor Significado
radial-gradient(, , ...) Gradiente básico entre colores.
radial-gradient(forma, , , ...) Gradiente con forma circular o elíptica.
radial-gradient(forma , , , ...) Gradiente con tamaño o dimensión.
radial-gradient(forma at ubicación, , , ...) Gradiente con colocación inicial.
radial-gradient(forma at ubicación, , , ...) Gradiente con tamaños entre colores.

Tabla 5 : Modalidades del gradiente radial

Algunos ejemplos aplicando estos parámetros:

div {
  background: radial-gradient(gold, red, black);
  background: radial-gradient(ellipse, gold 50%, red 55%, black 75%);
  background: radial-gradient(circle 200px, gold 50%, red 55%, black 75%);
  background: radial-gradient(circle 400px at left, gold 50%, red 55%, black 75%);
}

Donde:

Parámetros Valor
[forma] ellipse | circle
farthest-corner | closest-corner | farthest-side | closest-side |
[ubicación] center | top | left | right | bottom | top left | top right | bottom left | bottom right
El primer color del gradiente
El siguiente color del gradiente
De forma opcional, se puede indicar a que altura comienza a cambiar el gradiente.
... (Se pueden seguir añadiendo colores)

Tabla 6 : Parámetros gradiente radial

Valores

<position>
Una posición (<position>), interpretada de la misma forma que background-position o transform-origin. Si es omitida, su valor predeterminado es center.
<shape>
La figura del gradiente. Puede ser un valor circle (que indica que la figura del gradiente es un círculo con radio constante) o ellipse (que indica que la figura del gradiente es una elipse alineada por ejes). El valor predeterminado es ellipse.
<color-stop>
Representa un color fijo en una posición precisa, su valor está compuesto por un valor <color>, seguido por una posición opcional (que puede ser de tipo <percentage> o <length> a lo largo del rayo de gradiente). Un porcentaje de 0%, o una longitud de 0, representan el centro del gradiente, mientras que el valor de 100% representa la intersección de la figura final con el rayo virtual de gradiente. Los valores porcentuales internos son posicionados linealmente en el rayo gradiente.
<extent-keyword>
Valores clave que describen la longitud de la figura resultante. Los valores posibles son:

En el caso de la forma podemos elegir circle o ellipse, dependiendo de si queremos un gradiente con forma circular o uno con forma de elipse (que se adapta a la forma del elemento). En el caso del tamaño del elipse o círculo, tenemos varias opciones para indicar el tamaño que tendrá nuestro gradiente:

Valor | Constante Significado | Descripción
farthest-corner Intenta cubrir hasta la esquina más lejana (expande hacia ambos lados). Entonces: el tamaño de la figura resultante coincide exactamente con la esquina de la caja más lejana al centro del gradiente.
farthest-side Intenta cubrir hasta el lado más lejano (expande hacia un sólo lado). Similar a closets-side, excepto que el tamaño de la figura resultante coincide con el lado de la caja más lejano al centro (o de los lados vertical y horizontal).
closest-corner Intenta cubrir hasta la esquina más cercana. Entonces, el tamaño de la figura resultante coincide exactamente con la esquina de la caja más cercana desde el centro del gradiente.
closest-side Intenta cubrir hasta el lado más cercano. Acá, la figura resultante coincide con el lado de la caja más cercano al centro (para los círculos) o coincide con los lados vertical y horizontal más cercanos al centro (en el caso de elipses).
Le da un tamaño específico al gradiente (píxeles, porcentajes, etc...). Sólo usable en circle.
Los borradores anteriores del estándar incluyeron otras palabras clave (cover y contain) como sinónimos de los estándares farthest-corner y closest-side respectivamente. Use solo las palabras clave estándar, pues algunas implementaciones ya no soportan las variantes anteriores.

Tabla 7 : Gradiente radial: tamaños

En el caso de la ubicación, simplemente especificamos la posición en la que queremos que esté colocado el centro del gradiente.


IR A PORTAFOLIO

6. EJEMPLOS


Ejemplo 1

Usando el siguiente código CSS podemos obtener un fondo de elipse en la esquina más lejana (farthest-corner) a 45px 45px, cambiando el color de turquesa (#00FFFF), a blanco, a azul (#0000FF):

body {
  width: 100vh;
  height: 100vh;
  background-image: radial-gradient(ellipse farthest-corner at 45px 45px , #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%);
} 

Ejemplo 2

Este código generará un fondo de elipse in la esquina más lejana (farthest-corner) a 470px 45px, cambiando el color de amarillo (#FFFF80), a marrón pálido, a azul pálido (#E6E6FF):

body {
  width: 100vh;
  height: 100vh;
  background-image: radial-gradient(ellipse farthest-corner at 470px 47px , #FFFF80 20%, rgba(204, 153, 153, 0.4) 30%, #E6E6FF 60%);
}

Ejemplo 3

Este código generará un fondo de elipse en la esquina más lejana (farthest-corner) a 45px 45px, cambiando el color de rojo (#FF0000) a azul (#0000FF):

body {
  width: 100vh;
  height: 100vh;
  background-image: radial-gradient(farthest-corner at 45px 45px , #FF0000 0%, #0000FF 100%);
}

Ejemplo 4

Este código producirá un círculo difuso con radio de 16px:

body {
  width: 100vh;
  height: 100vh;
  background-image:  radial-gradient(16px at 60px 50% , #000000 0%, #000000 14px, rgba(0, 0, 0, 0.3) 18px, rgba(0, 0, 0, 0) 19px);
} 



IR A PORTAFOLIO

7. Bibliografía



https://lenguajecss.com/css/colores-y-fondos/gradientes-css/

https://developer.mozilla.org/es/docs/Web/CSS/radial-gradient()

https://webdesign.tutsplus.com/es/tutorials/how-to-use-gradients-on-the-web--cms-29922