Apuntes Clase

Curso 2024-25 - IES El Rincón

Proyecto mantenido por ichigar

Ejemplo de maquetado web

Vamos a crear paso a paso una web y vamos a organizarla y estructurarla utilizando los conceptos del modelo de cajas y las propiedades de maquetado que hemos visto.

Estructura de la web

Partiremos de una estructura básica de una web compuesta de:

El HTML de dicha página es el siguiente:

<div class="banner">
    <h1>Mi Página Web</h1>
    <p>Bienvenidos a mi sitio web</p>
</div>
<div class="navbar">
    <a href="#">Inicio</a>
    <a href="#">Servicios</a>
    <a href="#">Acerca de</a>
    <a href="#">Contacto</a>
</div>
<div class="container">
    <div class="sidebar">
        <h3>Panel Lateral</h3>
        <ul>
            <li><a href="#">Enlace 1</a></li>
            <li><a href="#">Enlace 2</a></li>
            <li><a href="#">Enlace 3</a></li>
        </ul>
    </div>
    <div class="content">
        <h2>Bloque de Contenido</h2>
        <p>Aquí va el contenido principal de la página. Puedes incluir texto, imágenes, tablas o cualquier otro tipo de información.</p>
        <p>Ejemplo de párrafo adicional para ilustrar el diseño del bloque principal.</p>
    </div>
</div>
<div class="footer">
    <p>© 2025 Mi Página Web. Todos los derechos reservados.</p>
</div>

Y su apariencia antes de aplicar ningún estilo:

Explicación

La web está compuesta de 4 “cajas principales”:

Observa también que por defecto el navegador aplica estilos de forma predeterminada a los diferentes elementos:

Dando estructura al documento con css

Para que los elementos de la web se dispongan de la manera deseada aplicamos los siguientes estilos iniciales:

    .banner,
    .navbar,
    .container,
    .sidebar,
    .content,
    .footer {  
      border: 1px solid black;
    }
    .sidebar,
    .content{
      display: inline-block;
    }

    .sidebar {
      width: 25%; 
    }

    .content {
      width: 70%;
    }

El resultado debe ser similar al siguiente:

Explicación

Mejorando la disposición de los elementos

Para mejorar la disposición de los elementos añadimos/modificamos lo siguiente a la hoja de estilos:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.banner,
.navbar,
.container,
.sidebar,
.content,
.footer {
  border: 1px solid black;
}
.banner {
  padding: 20px 0;
  text-align: center;
}
.navbar {
  padding: 10px;
  text-align: center;
}
.container {
  margin: 20px;
}
.sidebar,
.content {
  display: inline-block;
  vertical-align: top;
  padding: 20px;
}
.sidebar {
  width: 25%;
}
.content {
  width: 70%;
}
.footer {
  padding: 10px;
  text-align: center;
}

El resultado debe ser:

Explicación

De forma global aplicamos a todos los elementos los siguientes estilos:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

Con ello conseguimos que:

El resto de modificaciones consisten en

Maquetando la barra de navegación

Añadimos la siguiente configuración de estilos a los enlaces de la barra de navegación:

.navbar a {
  display: inline-block;
  padding: 14px 20px;
}

Los enlaces tienen como valor por defecto inline para la propiedad display. Al cambiarlo a inline-block conseguimos que se aplique el padding a los enlaces sin que afecte a los elementos de alrededor y que los enlaces tengan un área más amplia a la hora de interactuar con ellos.

Modificando colores y apariencia

Modificamos los estilos para que queden los siguientes:

* {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: Arial, sans-serif;
      line-height: 1.6;
    }


    .banner {
      padding: 20px 0;
      text-align: center;
      background-color: #4CAF50;
      color: white;
    }

    .navbar {
      padding: 10px;
      text-align: center;
      background-color: #333;
    }

    .navbar a {
      display: inline-block;
      padding: 14px 20px;
      color: white;
      text-decoration: none;
    }

    .navbar a:hover {
      background-color: #575757;
    }

    .container {
      margin: 20px;
    }

    .sidebar,
    .content {
      display: inline-block;
      vertical-align: top;
      padding: 20px;
    }

    .sidebar {
      width: 25%;
      background-color: #f4f4f4;
      border-right: 2px solid #ddd;
    }

    .content {
      width: 70%;
    }

    .footer {
      padding: 10px;
      text-align: center;
      background-color: #333;
      color: white;
    }

El resultado debería ser similar a:

Explicación

Haciendo nuestro diseño responsivo

Una web responsiva es un sitio web diseñado para adaptarse automáticamente a diferentes tamaños de pantalla y dispositivos (como PCs de escritorio, tabletas y teléfonos móviles), proporcionando una experiencia de usuario óptima sin importar el medio de acceso.

Para ello vamos a utilizar los media queries son una característica de CSS que permite aplicar estilos específicos a una página web según ciertas condiciones, como:

En este caso vamos a modificar los estilos de algunos elementos para el caso de que el ancho de pantalla sea menor de un valor de 768px

Añadimos a los estilos actuales los siguientes:

@media (max-width: 768px) {
    .navbar a {
        display: block;
        padding: 10px;
    }
    .sidebar,
    .content {
        display: block;
        width: 100%;
        margin: 0;
    }
    .sidebar{
      text-align: center;
    }
    .sidebar ul {
      list-style-type: none;
  }
    .content {
        margin-top: 10px;
    }
}

El resultado al estrechar la pantalla debe ser similar a:

Explicación

Con lo que hemos añadido, para pantallas de ancho reducido se hacen las siguientes modificaciones:

El código completo de la página hasta este punto es:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: Arial, sans-serif;
      line-height: 1.6;
    }


    .banner {
      padding: 20px 0;
      text-align: center;
      background-color: #4CAF50;
      color: white;
    }

    .navbar {
      padding: 10px;
      text-align: center;
      background-color: #333;
    }

    .navbar a {
      display: inline-block;
      padding: 14px 20px;
      color: white;
      text-decoration: none;
    }

    .navbar a:hover {
      background-color: #575757;
    }

    .container {
      margin: 20px;
    }

    .sidebar,
    .content {
      display: inline-block;
      vertical-align: top;
      padding: 20px;
    }

    .sidebar {
      width: 25%;
      background-color: #f4f4f4;
      border-right: 2px solid #ddd;
    }

    .content {
      width: 70%;
    }

    .footer {
      padding: 10px;
      text-align: center;
      background-color: #333;
      color: white;
    }

    @media (max-width: 768px) {
      .navbar a {
        display: block;
        padding: 10px;
      }

      .sidebar,
      .content {
        display: block;
        width: 100%;
        margin: 0;
      }

      .sidebar {
        text-align: center;
      }

      .sidebar ul {
        list-style-type: none;
      }

      .content {
        margin-top: 10px;
      }
    }
  </style>
</head>

<body>
  <div class="banner">
    <h1>Mi Página Web</h1>
    <p>Bienvenidos a mi sitio web</p>
  </div>

  <div class="navbar">
    <a href="#">Inicio</a>
    <a href="#">Servicios</a>
    <a href="#">Acerca de</a>
    <a href="#">Contacto</a>
  </div>

  <div class="container">
    <div class="sidebar">
      <h3>Panel Lateral</h3>
      <ul>
        <li><a href="#">Enlace 1</a></li>
        <li><a href="#">Enlace 2</a></li>
        <li><a href="#">Enlace 3</a></li>
      </ul>
    </div>

    <div class="content">
      <h2>Bloque de Contenido</h2>
      <p>Aquí va el contenido principal de la página. Puedes incluir texto, imágenes, tablas o cualquier otro tipo de
        información.</p>
      <p>Ejemplo de párrafo adicional para ilustrar el diseño del bloque principal.</p>
    </div>
  </div>

  <div class="footer">
    <p>© 2025 Mi Página Web. Todos los derechos reservados.</p>
  </div>
</body>

</html>

Complementario. Añadiendo menú tipo hamburguesa para la barra de navegación

Está versión completa la anterior añadiendo el menú de hamburguesa en el modo de pantalla de dispositivo móvil:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: Arial, sans-serif;
      line-height: 1.6;
    }


    .banner {
      padding: 20px 0;
      text-align: center;
      background-color: #4CAF50;
      color: white;
    }

    .navbar {
      padding: 10px;
      text-align: center;
      background-color: #333;
    }

    .navbar a {
      display: inline-block;
      padding: 14px 20px;
      color: white;
      text-decoration: none;
    }

    .navbar a:hover {
      background-color: #575757;
    }

    .container {
      margin: 20px;
    }

    .sidebar,
    .content {
      display: inline-block;
      vertical-align: top;
      padding: 20px;
    }

    .sidebar {
      width: 25%;
      background-color: #f4f4f4;
      border-right: 2px solid #ddd;
    }

    .content {
      width: 70%;
    }

    .footer {
      padding: 10px;
      text-align: center;
      background-color: #333;
      color: white;
    }

    /* Menú hamburguer */
    .hamburger {
      display: none;
      cursor: pointer; /* muestra mano como cursor al pasar por encima */
      font-size: 24px;
      color: white;
      padding: 10px;
      text-align: left;
    }

    .navbar-menu {
      display: block;
    }

    @media (max-width: 768px) {
      .navbar a {
        display: block;
        padding: 10px;
      }

      .sidebar,
      .content {
        display: block;
        width: 100%;
        margin: 0;
      }

      .sidebar {
        text-align: center;
      }

      .sidebar ul {
        list-style-type: none;
      }

      .content {
        margin-top: 10px;
      }

      /* hamburguer menu */
      .hamburger {
        display: block;
      }

      .navbar-menu {
        display: none; /* Por defecto se oculta el menú de navegación */
        width: 100%;
        text-align: center;
        background-color: #333;
      }
      .navbar-menu.active {
        display: block; /* mostramos menú de navegacion que por defecto está oculto en pantallas pequeñas */
      }

    }
  </style>
  <script>
    function toggleMenu() {
      const menu = document.querySelector('.navbar-menu');
      menu.classList.toggle('active');
    }
  </script>
</head>

<body>
  <div class="banner">
    <h1>Mi Página Web</h1>
    <p>Bienvenidos a mi sitio web</p>
  </div>

  <div class="navbar">
    <span class="hamburger" onclick="toggleMenu()">&#9776;</span>
    <div class="navbar-menu">
      <a href="#">Inicio</a>
      <a href="#">Servicios</a>
      <a href="#">Acerca de</a>
      <a href="#">Contacto</a>
    </div>
  </div>

  <div class="container">
    <div class="sidebar">
      <h3>Panel Lateral</h3>
      <ul>
        <li><a href="#">Enlace 1</a></li>
        <li><a href="#">Enlace 2</a></li>
        <li><a href="#">Enlace 3</a></li>
      </ul>
    </div>

    <div class="content">
      <h2>Bloque de Contenido</h2>
      <p>Aquí va el contenido principal de la página. Puedes incluir texto, imágenes, tablas o cualquier otro tipo de
        información.</p>
      <p>Ejemplo de párrafo adicional para ilustrar el diseño del bloque principal.</p>
    </div>
  </div>

  <div class="footer">
    <p>© 2025 Mi Página Web. Todos los derechos reservados.</p>
  </div>
</body>

</html>

No se explica con mucho detalle porque este código va más allá de los contenidos del módulo. De forma general, los cambios que se han aplicado son: