Está bien... ¿Hay un poco de CSS involucrado?, pero fue mucho más fácil que las respuestas que encontré en Internet.
¿Qué estoy intentando lograr?
Estoy tratando de lograr dos cosas con este método.
Así que tendremos un sitio web que se cargará con el tema esperado por el usuario y luego les permitirá cambiarlo cuando lo deseen.
Paso 1: Crear botón para alternar
Estoy usando una imagen como botón que tiene una imagen svg de una luna. Puede agregar el botón o casilla de verificación que le parezca adecuado para alternar entre dos opciones.
Paso 2: coloca los detalles de tu color en CSS como propiedades personalizadas
:root{ color-scheme: light dark; --light-bg: ghostwhite; --light-color: darkslategray; --light-code: tomato; --dark-bg: darkslategray; --dark-color: ghostwhite; --dark-code: gold; } .light{ color-scheme: light; } .dark{ color-scheme: dark; }
Está bien... Entonces, en la raíz estás viendo una propiedad llamada combinación de colores y este será nuestro punto de inflexión.
Como puedes ver, toma valores claros u oscuros. También he creado dos clases, .light y .dark, que establecen el valor del esquema de color en oscuro o claro.
Paso 3: Añade colores a varias partes de tu código
body{ background-color: light-dark(var(--light-bg), var(--dark-bg)); }
Ahora, cada vez que una propiedad solicita un color (como fondo, propiedades de color), puedes usar la función llamada claro-oscuro().
Esta función toma dos valores, el primero se usa cuando el esquema de color está configurado en claro y el segundo se usa cuando el esquema de color está configurado en oscuro.
Sí... Esta es una función que se lanzará en mayo de 2024. Es bastante nueva, pero se adaptará pronto. Y se encuentra en soporte básico al momento de escribir este artículo. Aquí están los documentos correspondientes
Si usa esto, el CSS detectará automáticamente la preferencia del usuario del sistema operativo y la establecerá en el color que desee.
Logramos nuestro primer objetivo: el sitio web se cargará con el modo de color que el usuario ya desea en su sistema operativo.
Paso 4: Usa Javascript para alternar entre el modo oscuro y claro
// mode is the toggle button mode.addEventListener("click", ()=>{ // we are getting the color scheme here let theme = document.documentElement.style.colorScheme; /* when a website is first loaded it will have null as its color-scheme value*/ if(theme == null){ // this window.matchMedia() checks if the user prefers the dark theme if(window.matchMedia("(prefers-color-scheme:dark)").matches){ /* if they prefer dark, clicking on our button should turn everything to light, the color-scheme will be given a value as light */ document.documentElement.style.colorScheme = "light"; } // Or else the color-scheme will be set to dark document.documentElement.style.colorScheme = "dark"; } /* Now since our toggle button set the color scheme, we can simply change light to dark and dark to light using below code */ else{ document.documentElement.style.colorScheme = (theme == "light")? "dark": "light"; } });
Aquí, document.documentElement.style.colorScheme en realidad se refiere al elemento :root de CSS.
Como ya logramos abrir el sitio web en el modo preferido del usuario en el paso anterior, aquí, cuando se hace clic en el botón de alternancia, se realizan las siguientes tareas.
*PD: * Esta es mi primera publicación y todavía soy un principiante en el desarrollo web. Pero cuando busqué este método, no vi ninguna publicación relacionada al respecto. Si ya sabes esto, lamento haberte molestado con los clics. Pensé que esta publicación me ayudará a recordar este proceso cada vez que trabaje en un nuevo proyecto.
Si está trabajando para que su sitio web funcione en navegadores antiguos, este método definitivamente no es para usted. Cuéntamelo en los comentarios sobre este post. Gracias por leer.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3