Cambiar el color de resaltado del texto con CSS

Soy bastante activo en CodePen. Hace unos meses, publiqué un bolígrafo que demuestra cómo cambiar el color de resaltado del texto en la página. Pensé que sería bueno escribir un artículo corto que lo guiará a través de los conceptos básicos y luego profundizar un poco más con las variables CSS.

Los basicos

Es bastante simple. Para cambiar el color del texto resaltado, simplemente apunte al ::selection selector y luego defina el color del background propiedad.

Mira el fragmento a continuación.

::selection {
  background: red;
}

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

Bucear más profundo

Ahora que sabemos lo fácil que es cambiar el color de resaltado, vayamos un paso más allá y rotamos los colores utilizando un poco de JavaScript y una única variable CSS.

Primero, en su JavaScript, defina una matriz de cadenas: cada elemento de la matriz es un valor de color hexadecimal.

Aquí está mi matriz:

const colors = ["#c1b001", "#a8140e", "#4315aa", "#359d09", "#8f4762"];

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

Queremos asignar aleatoriamente un color de la matriz a nuestra variable CSS cuando el usuario tiene el botón del mouse presionado para seleccionar algún texto.

Para hacer esto, necesitamos crear un nuevo detector de eventos y escuchar el mousedown evento.

Aquí está mi oyente de eventos:

window.addEventListener("mousedown", () => {
 // code will go here
});

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

Ahora que tenemos este evento configurado, hay tres cosas que debemos hacer:

  1. Agarra y elimina el primer color de la matriz.
  2. Establezca la variable CSS con el valor que obtenemos de la matriz
  3. Empuje la variable de color del paso 1 para que ahora esté en la parte inferior de la matriz

Esto nos dará la función de rotación de colores.
Aquí está mi función completada:

window.addEventListener("mousedown", (e) => {
  const color = colors.shift();
  document.documentElement.style.setProperty("--highlight-color", color);
  colors.push(color);
});

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

Hemos hecho referencia a una variable CSS llamada —highlight-color pero aún no lo he definido.

En su CSS, defina la variable e inicialícela para null.

:root {
  --highlight-color: null;
}

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

Finalmente, apunte al ::selection selector y ajuste el background propiedad al valor en la variable CSS.

::selection {
  background: var(--highlight-color);
}

Entrar en el modo de pantalla completa Salir del modo de pantalla completa

¡Y ahí vamos! Aquí está el bolígrafo final, ¡no dude en probarlo!

Ver la pluma 🎨 Cambio de color de resaltado de texto 🎨 por Braydon Coyer
(@braydoncoyer) sobre CodePen.

Como siempre, si quieres más contenido como este, sígueme en Gorjeo ¡y asegúrese de suscribirse a mi boletín de noticias para futuros artículos y tutoriales!

Deja una respuesta 0

Your email address will not be published. Required fields are marked *