Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=ab3d01d7-75f8-430e-a1bb-cb3b9b6c50f0

Modo oscuro y temas personalizados con Bootstrap 5.3.0 o posterior

imagen ornamental

Si utilizas Bootstrap para crear tus aplicaciones, nunca ha sido tan fácil como ahora poder cambiar automáticamente a un tema oscuro.

Si utilizas Bootstrap 5.3.0 o posterior, lo único que tienes que hacer para que tu aplicación adopte el modo oscuro es aplicarle el atributo data-bs-theme al elemento raíz <html>, con el valor "dark", así:

<!doctype html>
<html lang="en" data-bs-theme="dark">
  <!-- ... -->
</html>

A partir de ese momento se verá con el tema oscuro sin que tengas que hacer nada más. Puedes comprobar su funcionamiento en la propia página de la documentación de Bootstrap. Observa, en las herramientas del desarrollador, cómo se cambia el valor del atributo al elegir el modo claro o el oscuro:

Animación que muestra el cambio del atributo al cambiar el modo claro u oscuro

De hecho, es más interesante aún... Y es que existe un tercer valor "auto" que utilizará el modo claro u oscuro de manera automática según tu preferencia para el sistema operativo.

Así, si colocas data-bs-theme="auto" en el nodo raíz de tu aplicación o página Web te asegurarás de que siempre se adapta a las preferencias de tus usuarios.

Lo interesante de este atributo no es sólo que puedas poner la página o aplicación entera en modo claro u oscuro, sino que, si tiene sentido para tu aplicación, podrás establecer el modo solamente en ciertas partes de la misma. Es decir, puedes aplicar este atributo únicamente a ciertos elementos y se aplicará el modo correspondiente solo a estos, pero no al resto de la página (puedes envolver un grupo de elementos en un div y aplicarlo solo a ese conjunto).

Temas personalizados

Bootstrap ha escrito de nuevo su core para poder dar soporte de primera clase para este nuevo modo oscuro. Pero, ya que lo hicieron, aprovecharon para ir más allá: Bootstrap ahora admite la creación de tus propios temas personalizados o que puedas adaptar los modos de color existentes si no te acaban de convencer.

Como seguramente sabrás, Bootstrap utiliza Sass como lenguaje por encima de CSS para crear el framework. Dentro del código fuente han incluido un nuevo mixin de Sass (si sabes algo de Sass sabrás de lo que hablo) llamado color-mode() que se utiliza para crear los nuevos temas. Junto con la nueva variable $color-mode-type, también puedes cambiar su funcionamiento para generar atributos data o media queries según necesites.

Por ejemplo, supón que quieres definir un nuevo tema de color, intermedio entre el claro y el oscuro, que usa colores azules oscuros para lograrlo, y le quieres llamar simplemente "blue". Podrías añadir un archivo .scss de Sass al código de Bootstrap con un contenido parecido a este:

[data-bs-theme="blue"] {
  --bs-body-color: var(--bs-white);
  --bs-body-color-rgb: #{to-rgb($white)};
  --bs-body-bg: var(--bs-blue);
  --bs-body-bg-rgb: #{to-rgb($blue)};
  --bs-tertiary-bg: #{$blue-600};

  .dropdown-menu {
    --bs-dropdown-bg: #{mix($blue-500, $blue-600)};
    --bs-dropdown-link-active-bg: #{$blue-700};
  }

  .btn-secondary {
    --bs-btn-bg: #{mix($gray-600, $blue-400, .5)};
    --bs-btn-border-color: #{rgba($white, .25)};
    --bs-btn-hover-bg: #{darken(mix($gray-600, $blue-400, .5), 5%)};
    --bs-btn-hover-border-color: #{rgba($white, .25)};
    --bs-btn-active-bg: #{darken(mix($gray-600, $blue-400, .5), 10%)};
    --bs-btn-active-border-color: #{rgba($white, .5)};
    --bs-btn-focus-border-color: #{rgba($white, .5)};
    --bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .2);
  }
}

que redefine el aspecto del cuerpo, de los menús desplegables y de los botones secundarios para que tengan el siguiente aspecto:

El aspecto de los controles al aplicarle el nuevo tema azul

y solo tienes que poner esto en el elemento que los contiene para poder utilizarlo:

<div data-bs-theme="blue">
  ... <!-- Todos los elementos a los que le afecta el tema -->
</div>

Nota: obviamente, al ser código Sass, primeramente tienes que compilarlo e incluirlo con el resto del código de Bootstrap. Si haces desarrollo profesional Front-End estarás utilizando herramientas que hacen esto automáticamente antes de desplegar o probar tu aplicación.

Esta nueva funcionalidad de temas, incluso aunque solo utilices los dos temas por defecto (claro y oscuro) es un gran añadido a Bootstrap, especialmente en estos tiempos donde los usuarios esperan poder usar su modo preferido de manera trasparente.

En la documentación oficial de Bootstrap tienes toda la información sobre los nuevos modos claro y oscuro y sobre la personalización.

¡Espero que te resulte útil!

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Desarrollo Web

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.