radial-gradient()
crea una imagen consistente de una transición progresiva entre dos
o
más colores
que se le envíen, puede recibir únicamente dos formas geométricas un círculo o una elipse. Y hasta el momento
solamente se puede usar con la propiedad background-image o background
. Por ejemplo: background:
radial-gradient(red, green);
le estamos indicando que queremos que el centro del círculo sea rojo y
se vaya
propagando hasta el color verde con una difuminación consistente. Una sintaxis más completa para esta
propiedad es la siguiente: radial-gradient(circle at center, red 0%, blue 50%, green 100%)
En la cual en la primera propiedad le definimos la forma geométrica valida que queremos (circle o ellipse)
después le definimos el radio de origen desde el cual queremos empezar a hacer el gradiente (en este caso
desde el centro), de ahí lo que hacemos es definir los colores que queremos para nuestro gradiente (podemos
definir los que queramos) y el radio hasta el cual queremos que vaya ese color en específico. Para más
información de esta propiedad podemos consultar la documentación de Mozilla y este
artículo de CSS tricks.
Lo primero que hicimos fue definir en nuestro HTML la estructura básica que necesitábamos, un texto con el
contenido Press and hold y un contenedor con la clase spotlight. En nuestro CSS colocamos una imagen de fondo
en la etiqueta body y otros estilos para que nos ocupará toda la pantalla, reseteamos los estilos por defecto
de los navegadores, al título le dimos otros estilos para centrarlo con respecto a toda la pantalla y a la
clase spotlight le indicamos que ocupe todo el espacio de la pantalla y le asignamos background-image:
radial-gradient(circle, transparent 9rem, rgba(0, 0, 0, 0.55) 10rem);
en la cual le indicamos que la
figura que queremos es un círculo, el primer color es transparente hasta un radio de 9rem y el color final es
de rgba(0, 0, 0, 0.55) que comienza en 10rem hasta el final. Y finalmente en nuestro JavaScript, tenemos
inicialmente la selección del elemento spotlight después añadimos unos escuchadores a la página para los
eventos mousemove, mousedown y mouseup, de manera respectiva lo que hacemos en estos eventos es: capturar la
posición del mouse y asignarla a la función radial-gradient haciendo uso de unos cálculos para colocarlo de
la forma en la que queremos, preguntamos si el evento que se disparó es el click cambiamos el valor del
último color de la función radial-gradient para hacerlo más oscuro y por último cambiamos este último color
por el valor que tenía inicialmente.
See the Pen We code summer 1 by Henry Zarza (@HenryZarza) on CodePen.
See the Pen Radial gradient CSS by Federico Di Rocco (@fededirocco) on CodePen.
See the Pen We code: summer edition - spotlight effect by Gabriel Zanzotti (@SKOLZ) on CodePen.