Notification texts go here Contact Us Buy Now!

Guía completa: Cómo crear un sitio web con modo claro/oscuro y menú adaptable

Descubre cómo crear un sitio web moderno con un diseño adaptable que incluye un modo claro/oscuro y un menú responsive.
jesanre

 

Pantalla de ordenador con modo oscuro

Introducción: En este tutorial, aprenderás cómo crear un sitio web moderno y adaptable utilizando HTML, CSS y JavaScript. Te guiaré paso a paso para implementar un diseño con modo claro/oscuro y un menú adaptable que se transforma en un icono de hamburguesa en dispositivos pequeños.

Paso 1: Preparación del proyecto Antes de comenzar, asegúrate de tener configurado un proyecto básico de HTML y CSS. También necesitarás incluir la biblioteca de Font Awesome en tu proyecto para acceder a los iconos que utilizaremos más adelante.

El HTML:

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Alternar Modo Claro/Oscuro</title>

  <link rel="stylesheet" href="styles.css">

  <script src="script.js" defer></script>

</head>

<body>

  <div class="container">

    <h1>Modo Claro/Oscuro</h1>

    <button id="toggle-btn">

      <i class="fas fa-sun"></i>

      <i class="fas fa-moon"></i>

    </button>

  </div>

</body>

</html>

El CSS:

body {

  background-color: #f0f0f0; /* Color de fondo predeterminado (modo claro) */

  color: #333; /* Color de texto predeterminado (modo claro) */

}

.dark-mode {

  background-color: #333; /* Color de fondo para modo oscuro */

  color: #f0f0f0; /* Color de texto para modo oscuro */


}

Asegúrate de tener los archivos de Font Awesome (CSS y fuentes) incluidos en tu proyecto para que los iconos funcionen correctamente. 

Para ello incluye ésta línea antes de </head>:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">

Además, este ejemplo solo cambia los colores de fondo y texto, pero podrías ajustarlo para cambiar otros estilos según tus necesidades.

Paso 2: Creación del esqueleto HTML Diseñaremos la estructura básica de nuestra página web, que incluirá un encabezado con un botón para alternar entre el modo claro y oscuro, y un menú de navegación con tres enlaces.

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Menú con Icono de Hamburguesa</title>

  <link rel="stylesheet" href="styles.css">

  <script src="script.js" defer></script>

</head>

<body>

  <nav class="navbar">

    <div class="container">

      <div class="menu-toggle" id="menu-toggle">

        <i class="fas fa-bars"></i>

      </div>

      <ul class="menu" id="menu">

        <li><a href="#">Inicio</a></li>

        <li><a href="#">Acerca</a></li>

        <li><a href="#">Contacto</a></li>

      </ul>

    </div>

  </nav>

</body>

</html>

Paso 3: Estilos CSS Aplicaremos estilos CSS para darle un aspecto atractivo a nuestro sitio web. Configuraremos los colores y las disposiciones para el modo claro y oscuro, así como para el menú de navegación.

.navbar {

  background-color: #333;

  color: #fff;

  padding: 10px 0;

}

.container {

  display: flex;

  justify-content: space-between;

  align-items: center;

}

.menu-toggle {

  display: none; /* Por defecto oculto en pantallas grandes */

  cursor: pointer;

}

.menu {

  list-style: none;

  padding: 0;

  margin: 0;

}

.menu li {

  display: inline-block;

  margin-right: 20px;

}

.menu li:last-child {

  margin-right: 0;

}

.menu a {

  text-decoration: none;

  color: inherit;

}

@media screen and (max-width: 768px) {

  .menu {

    display: none; /* Ocultar menú en pantallas pequeñas por defecto */

  }

  .menu-toggle {

    display: block; /* Mostrar icono de hamburguesa en pantallas pequeñas */

  }

  .menu.active {

    display: block; /* Mostrar menú cuando se hace clic en el icono de hamburguesa */

  }

}

Paso 4: Funcionalidad del modo claro/oscuro Agregaremos funcionalidad con JavaScript para permitir que los usuarios cambien entre el modo claro y oscuro con un solo clic. Utilizaremos localStorage para recordar la preferencia del usuario incluso después de recargar la página.

document.addEventListener('DOMContentLoaded', function() {

  const toggleBtn = document.getElementById('toggle-btn');

  const sunIcon = document.getElementById('sun-icon');

  const moonIcon = document.getElementById('moon-icon');

  const body = document.body;

  const menuToggle = document.getElementById('menu-toggle');

  const menu = document.getElementById('menu');

  // Verificar si hay una preferencia de modo almacenada en localStorage

  const mode = localStorage.getItem('mode');

  if (mode === 'dark') {

    enableDarkMode();

  }

  toggleBtn.addEventListener('click', () => {

    if (body.classList.contains('dark-mode')) {

      disableDarkMode();

    } else {

      enableDarkMode();

    }

  });

  menuToggle.addEventListener('click', () => {

    menu.classList.toggle('active');

  });

  function enableDarkMode() {

    body.classList.add('dark-mode');

    sunIcon.style.display = 'none';

    moonIcon.style.display = 'inline';

    // Almacenar preferencia de modo en localStorage

    localStorage.setItem('mode', 'dark');

  }

  function disableDarkMode() {

    body.classList.remove('dark-mode');

    sunIcon.style.display = 'inline';

    moonIcon.style.display = 'none';

    // Eliminar preferencia de modo de localStorage

    localStorage.setItem('mode', 'light');

  }

});

Conclusión: ¡Felicidades! Has creado con éxito un sitio web moderno con modo claro/oscuro y un menú adaptable. ¡Ahora puedes personalizarlo aún más y desplegarlo para que el mundo lo vea!

إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.