Type something to search...
Web climatológica con hora

Web climatológica con hora

Índice


¿Qué es una página web?

Una página web es un documento digital accesible a través de internet que contiene información en formato de texto, imágenes, videos, enlaces, y otros elementos interactivos. Las páginas web son parte de un sitio web y están diseñadas para ser visualizadas en navegadores como Google Chrome, Firefox o Safari.

Ejemplos de páginas web:

  • Informativas: Wikipedia.
  • Interactivas: Google Maps.
  • Comerciales: Amazon.

¿Cómo se construye una página web?

Las páginas web se construyen mediante lenguajes de programación que estructuran, diseñan y dotan de funcionalidades al contenido. Para crear una página web básica se necesitan tres componentes principales:

  • HTML para la estructura.
  • CSS para el diseño.
  • JavaScript para la interacción.

Las páginas avanzadas pueden incluir bases de datos y se conectan a servicios externos como APIs.


Elementos que componen una página web

HTML

El HTML (HyperText Markup Language) es el lenguaje de marcado que define la estructura básica de una página web. Organiza el contenido utilizando etiquetas como:

  • <h1>: Títulos.
  • <p>: Párrafos.
  • <img>: Imágenes.

Ejemplo de HTML:

<!DOCTYPE html>
<html lang="es">
<head>
  <title>Mi Página Web</title>
</head>
<body>
  <h1>Bienvenido</h1>
  <p>Esta es mi primera página web.</p>
</body>
</html>

CSS

El CSS (Cascading Style Sheets) es un lenguaje que permite diseñar las páginas web. Define colores, fuentes, tamaños y estilos.

Ejemplo de CSS:

body {
  background-color: lightblue;
  font-family: Arial, sans-serif;
}

h1 {
  color: darkblue;
}

JavaScript

El JavaScript es un lenguaje de programación que añade interactividad a las páginas web, como animaciones, formularios dinámicos y más.

Ejemplo de JavaScript:

document.getElementById("miBoton").addEventListener("click", function() {
  alert("¡Hola, hiciste clic!");
});

¿Qué es una API?

Una API (Application Programming Interface) es un puente que permite que diferentes aplicaciones se comuniquen entre sí. Por ejemplo, la API de OpenWeatherMap permite a los desarrolladores obtener información del clima.

Las APIs funcionan a través de peticiones que envían datos al servidor y reciben respuestas estructuradas (generalmente en JSON).


Conexión con la API de OpenWeatherMap

Pasos para conectarse a OpenWeatherMap:

  1. Crear una cuenta en OpenWeatherMap.
  2. Generar una API Key en tu cuenta.
  3. Hacer una solicitud HTTP desde tu aplicación.

Ejemplo en JavaScript:

const apiKey = 'TU_API_KEY';
const city = 'Mexico City';

fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`)
  .then(response => response.json())
  .then(data => {
    console.log(`Temperatura en ${city}: ${data.main.temp}°C`);
  })
  .catch(error => console.error('Error al obtener los datos:', error));

En este ejemplo:

  • fetch envía la solicitud HTTP.
  • response.json() transforma la respuesta en un objeto de JavaScript.
  • data.main.temp accede a la temperatura actual.

Recursos para investigar más a fondo

  1. MDN Web Docs (Mozilla) - Documentación detallada sobre HTML, CSS y JavaScript.
  2. W3Schools - Tutoriales interactivos de desarrollo web.
  3. OpenWeatherMap API - Documentación oficial de la API.
  4. FreeCodeCamp - Cursos gratuitos de desarrollo web.


Desafíos

  1. Agregar cinco ciudades de tu preferencia a la lista:

    Toma el nombre correcto de la ciudad, por ejemplo, en la siguiente imagen el nombre que nos servirá es Santiago Tianguistenco de Galeana web-clima

    • Modifica el archivo HTML para incluir las opciones en el desplegable <select>.

    Ejemplo:

    <select id="city-select">
      <option value="Mexico City">Ciudad de México</option>
      <option value="London">Londres</option>
      <option value="Tokyo">Tokio</option>
      <option value="New York">Nueva York</option>
      <option value="Paris">París</option>
      <!-- Agrega más ciudades aquí -->
     <option value="Santiago Tianguistenco de Galeana">Santiago Tianguistenco de Galeana<option>
    
    </select>
  2. Cambiar el color de la página web:

    • Modifica el archivo CSS para cambiar el color de fondo o los textos.

    Ejemplo:

    body {
      background-color: lightyellow; /* Cambia el color a amarillo claro */
      color: darkgreen; /* Cambia el texto a verde oscuro */
    }

    Si deseas mantener el color con efecto de gradiente linear puedes usar el siguiente código:

    body {
      background: linear-gradient(to right, #ff7e5f, #feb47b);
      color: white;
    }

    Tip: Aqui puedes encontrar más colores en formato hexadecimal: Color Hex.

    Tip: Experimenta con diferentes combinaciones de colores y asegúrate de mantener un diseño agradable.


¡Diviértete explorando y creando tu propia página web personalizada! 😊

Código

index.html


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Clima y Horarios del Mundo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="container">
    <h1>Clima y Horarios del Mundo</h1>

    <!-- Dropdown para seleccionar ciudades -->
    <div class="dropdown">
      <label for="city-select">Selecciona una ciudad:</label>
      <select id="city-select">
        <option value="" disabled selected>-- Selecciona una ciudad --</option>
        <option value="London">London</option>
        <option value="New York">New York</option>
        <option value="Tokyo">Tokyo</option>
        <option value="Mexico City">Mexico City</option>
        <option value="Sydney">Sydney</option>
        <option value="Paris">Paris</option>
        <option value="Berlin">Berlin</option>
        <option value="Moscow">Moscow</option>
        <option value="Dubai">Dubai</option>
        <option value="Santiago Tianguistenco de Galeana">Santiago Tianguistenco de Galeana</option>
      </select>
    </div>

    <!-- Contenedor de la tarjeta de datos -->
    <div id="city-data-container">
      <p>Selecciona una ciudad para ver los datos del clima.</p>
    </div>
  </div>
  <script src="script.js"></script>
</body>
</html>

 

styles.css


/* styles.css */
body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    background: linear-gradient(to bottom, #1c3cdb, #229fde);
    color: #fff;
  }
  
  .container {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
    text-align: center;
  }
  
  h1 {
    margin: 20px 0;
    font-size: 2.5em;
  }
  
  .dropdown {
    margin: 20px 0;
  }
  
  label {
    font-size: 1.2em;
    margin-right: 10px;
  }
  
  select {
    font-size: 1em;
    padding: 5px 10px;
    border-radius: 5px;
    border: none;
  }
  
  #city-data-container {
    margin-top: 20px;
    background-color: #fff;
    color: #333;
    border-radius: 10px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    padding: 20px;
    text-align: center;
  }
  
  #city-data-container img {
    width: 50px;
    margin: 10px 0;
  }
  
  #city-data-container p {
    margin: 10px 0;
  }
  

script.js


//script.js

const apiKey = 'c44e5dd65db6d0bfdb326f5095f40a64'; // API Key de OpenWeatherMap
const citySelect = document.getElementById('city-select');
const cityDataContainer = document.getElementById('city-data-container');

let intervalId; // Para almacenar el intervalo y evitar múltiples timers

// Función para calcular la altitud
function calculateAltitude(seaLevelPressure, groundPressure) {
  const scaleFactor = 44330; // Factor de escala estándar en metros
  const exponent = 1 / 5.255; // Exponente para la ecuación
  return scaleFactor * (1 - Math.pow(groundPressure / seaLevelPressure, exponent));
}

// Función para iniciar el timer de la hora en tiempo real
function startCityClock(timezoneOffset) {
  if (intervalId) {
    clearInterval(intervalId); // Detener cualquier timer activo
  }

  intervalId = setInterval(() => {
    const utcTimestamp = new Date().getTime() + (new Date().getTimezoneOffset() * 60000); // Hora UTC en milisegundos
    const cityTimestamp = utcTimestamp + timezoneOffset * 1000; // Ajustar timezone en milisegundos

    // Crear una nueva fecha ajustada
    const cityDate = new Date(cityTimestamp);

    // Formatear correctamente la hora local con AM/PM
    const localTime = cityDate.toLocaleTimeString('es-ES', {
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: true, // Cambiar a true si deseas el formato AM/PM
    });

    // Actualizar la hora en tiempo real en el elemento correspondiente
    const timeElement = document.getElementById('city-time');
    if (timeElement) {
      timeElement.textContent = `Hora exacta en la ciudad: ${localTime}`;
    }
  }, 1000); // Actualizar cada segundo
}

// Función para obtener datos del clima
async function fetchCityData(city) {
  try {
    // Petición a la API de OpenWeatherMap
    const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`);
    const data = await response.json();

    // Verificar si la respuesta es exitosa
    if (data.cod !== 200) {
      throw new Error(data.message || 'Error desconocido');
    }

    // Obtener timezoneOffset en segundos
    const timezoneOffset = data.timezone;

    // Obtener presiones
    const seaLevel = data.main.sea_level || data.main.pressure; // Presión al nivel del mar
    const groundLevel = data.main.grnd_level || data.main.pressure; // Presión en el nivel actual

    // Calcular la altitud sobre el nivel del mar
    const altitude = calculateAltitude(seaLevel, groundLevel).toFixed(2);

    // Crear el contenido de la tarjeta
    cityDataContainer.innerHTML = `
      <h2>${data.name}, ${data.sys.country}</h2>
      <img src="https://openweathermap.org/img/wn/${data.weather[0].icon}@2x.png" alt="${data.weather[0].description}">
      <p><strong>Clima:</strong> ${data.weather[0].description}</p>
      <p><strong>Temperatura:</strong> ${data.main.temp}°C</p>
      <p><strong>Sensación térmica:</strong> ${data.main.feels_like}°C</p>
      <p><strong>Humedad:</strong> ${data.main.humidity}%</p>
      <p><strong>Presión:</strong> ${data.main.pressure} hPa</p>
      <p><strong>Nivel del mar:</strong> ${seaLevel} hPa</p>
      <p><strong>Altitud sobre el nivel del mar:</strong> ${altitude} metros</p>
      <p><strong>Velocidad del viento:</strong> ${data.wind.speed} m/s</p>
      <p><strong>Zona horaria en la ciudad:</strong> UTC${timezoneOffset / 3600 > 0 ? '+' : ''}${timezoneOffset / 3600}</p>
      <p id="city-time"></p> <!-- Elemento para mostrar la hora en tiempo real -->
    `;

    // Iniciar el timer para actualizar la hora en tiempo real
    startCityClock(timezoneOffset);
  } catch (error) {
    console.error('Error al obtener los datos:', error);

    // Mostrar un mensaje de error
    cityDataContainer.innerHTML = `
      <p>No se pudieron obtener los datos del clima para ${city}.</p>
    `;
  }
}

// Manejar el evento de selección de la ciudad
citySelect.addEventListener('change', (event) => {
  const selectedCity = event.target.value;
  if (selectedCity) {
    // Mostrar mensaje de carga
    cityDataContainer.innerHTML = '<p>Cargando datos...</p>';
    fetchCityData(selectedCity);
  }
});

¿Cómo ejecutar o probar la página en un navegador?

Para ejecutar o probar la página web en tu navegador, sigue estos pasos:

  1. Crea tres archivos básicos:

    • index.html: Contendrá la estructura de la página.
    • styles.css: Contendrá los estilos de la página.
    • script.js: Contendrá la lógica para conectarte con la API.
  2. Organiza los archivos: Coloca los tres archivos en una misma carpeta, asegurándote de enlazarlos correctamente en el archivo index.html:

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Página de Clima</title>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <h1>Clima y Horarios</h1>
        <script src="script.js"></script>
    </body>
    </html>
  3. Abre el archivo index.html en tu navegador:

    • Haz doble clic sobre el archivo index.html.
    • Esto abrirá tu navegador predeterminado y mostrará la página.
  4. Prueba la funcionalidad:

    • Selecciona una ciudad desde el menú desplegable.
    • Observa cómo se actualizan los datos del clima y la hora en tiempo real.

Preguntas

  • ¿Qué es una página web y para qué se utiliza?
  • ¿Cuáles son los tres componentes principales para construir una página web?
  • ¿Qué lenguajes se necesitan para construir una página web básica?
  • ¿Cuáles son algunos ejemplos de páginas web que usas todos los días?
  • ¿Cómo se asegura que una página web tenga un diseño bonito y colores agradables?
  • ¿Qué etiqueta se usa en HTML para escribir un título grande en una página web?
  • ¿Cómo puedes agregar una nueva ciudad para mostrar el clima en tu página?
  • ¿Cómo puedes cambiar el color de fondo de la página web?

? c-w

Publicaciones relacionadas

Semáforo sencillo

Semáforo sencillo

// C++ code //// Pines de los LEDs del semáforo sencillo const int LED_VERDE = 2; const int LED_AMARILLO = 3; const int LED_ROJO = 4;void setup() { // Configuración de los pines OUTPUT

read more
Semáforos Coordinados

Semáforos Coordinados

Semáforos coordinados Introducción En este proyecto, vamos a crear un sistema de semáforos coordinados utilizando Arduino.

read more
Markdown Style Guide

Markdown Style Guide

Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro. Headings The following HTML <h1>—<h6> elements represent six levels of section headings

read more
Pantallas LCD

Pantallas LCD

Introducción a las Pantallas LCD Las pantallas LCD (Liquid Crystal Display) son dispositivos electrónicos utilizados para mostrar información de manera clara y eficiente. Estas pantallas son muy co

read more
Personalizar caracteres en LCD

Personalizar caracteres en LCD

ÍndiceExplicación del Código Componentes Clave del Código Librería LiquidCrystal_I2C [In

read more
Semáforo Doble

Semáforo Doble

Descripción del código Este programa controla el funcionamiento de dos semáforos simulados utilizando un Arduino. Cada semáforo cuenta con tres luces LED: verde, amarillo y rojo. El programa altern

read more
Galería Web

Galería Web

Introducción Este proyecto está diseñado para comprender las bases del desarrollo web, comenzando con HTML y CSS básicos y progresando a JavaScript interactivo. Se divide en **cuatro etapas evoluti

read more
Controlador L298N DC Motor para Arduino

Controlador L298N DC Motor para Arduino

Introduccion Si bien eventualmente necesitarás aprender a controlar motores de CC para construir tu propio robot, probablemente necesitarás algo un poco más fácil para comenzar, y ahí es donde entr

read more
Componentes HTML

Componentes HTML

import YouTubeEmbed from '../../layouts/components/YouTubeEmbed.astro'; Componentes HTML y Estilos CSS En este blog explicativo se muestran los componentes principales de HTML y estilos CSS para

read more
Portafolio web

Portafolio web

Proyecto: Página Personal o Portafolio Web Objetivo Crear una página web personal en la que se muestre:Una cabecera con tu nombre y un menú de navegación. Una sección "Sobre Mí" co

read more
Juego de adivinar el número

Juego de adivinar el número

Proyecto: Juego de Adivinar el Número Objetivo Crear un juego interactivo en el que el usuario debe adivinar un número aleatorio entre 1 y 100. El juego brindará retroalimentación indicando si

read more
Introducción a Javascript

Introducción a Javascript

Test Código<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Introducción a JavaScript</title> <style> /* E

read more
Examen Práctico: Mi Página Personal

Examen Práctico: Mi Página Personal

Examen Práctico: Objetivo Crear una página web personal con diseño moderno en la que se muestre:Una cabecera fija con tu nombre y un menú de navegación interactivo. **Una sección "Sob

read more
Bases para la Elaboración del Reporte Breve del Proyecto

Bases para la Elaboración del Reporte Breve del Proyecto

📝 Bases para la Elaboración del Reporte Breve del ProyectoFormato: Documento Word (máximo 4 páginas)Entrega: En formato digital (PDF), cargar en el apartado de Archivos.

read more
Mascota virtual

Mascota virtual

🐾 Proyecto: Mascota Virtual en Escritorio con Python Este proyecto te guiará paso a paso para crear una mascota virtual que se mueva por tu pantalla de Windows y muestre mensajes motivadores c

read more
Mascota virtual

Mascota virtual

🐾 Proyecto: Mascota Virtual en Escritorio con Python Este proyecto te guiará paso a paso para crear una mascota virtual que se mueva por tu pantalla de Windows y muestre mensajes motivadores c

read more