\<\!DOCTYPE html\> \ \ \Previsão do Tempo - Rio de Janeiro\ \ \ body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; font-family: Arial, sans-serif; background-color: \#f0f0f0; } ``` .fullscreen-container { width: 1920px; height: 1080px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(calc(100vw / 1920px)); transform-origin: top left; background: url('[https://i.imgur.com/v8n3a2V.jpeg](https://i.imgur.com/v8n3a2V.jpeg)') no-repeat center center; background-size: cover; display: flex; justify-content: center; align-items: center; text-align: center; color: white; } .weather-info { background: rgba(0, 0, 0, 0.5); padding: 40px; border-radius: 15px; } #city { font-size: 80px; font-weight: bold; text-shadow: 2px 2px 4px #000000; } #temperature { font-size: 120px; font-weight: bold; margin: 20px 0; text-shadow: 3px 3px 6px #000000; } #description { font-size: 50px; text-transform: capitalize; text-shadow: 2px 2px 4px #000000; } #forecast { margin-top: 40px; display: flex; justify-content: space-around; } .forecast-day { background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 10px; margin: 0 10px; width: 200px; } .forecast-day h3 { font-size: 30px; margin-bottom: 10px; } .forecast-day p { font-size: 24px; margin: 5px 0; } ``` \ \ \ \
\
\

Rio de Janeiro\ \

--°C\ \

Carregando...\ \

\ \ \ \ document.addEventListener('DOMContentLoaded', () =\> { // Coordenadas do Rio de Janeiro const latitude = -22.9068; const longitude = -43.1729; ``` const apiUrl = `https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&current_weather=true&hourly=temperature_2m,weathercode&daily=weathercode,temperature_2m_max,temperature_2m_min&timezone=America%2FSao_Paulo`; fetch(apiUrl) .then(response => response.json()) .then(data => { // Atualiza a temperatura atual document.getElementById('temperature').textContent = `${Math.round(data.current_weather.temperature)}°C`; // Atualiza a descrição do tempo atual document.getElementById('description').textContent = getWeatherDescription(data.current_weather.weathercode); // Atualiza a previsão para os próximos dias const forecastContainer = document.getElementById('forecast'); for (let i = 0; i < 5; i++) { const day = new Date(data.daily.time[i]); const dayName = day.toLocaleDateString('pt-BR', { weekday: 'short' }); const forecastDay = document.createElement('div'); forecastDay.classList.add('forecast-day'); const dayTitle = document.createElement('h3'); dayTitle.textContent = dayName; const maxTemp = document.createElement('p'); maxTemp.textContent = `Máx: ${Math.round(data.daily.temperature_2m_max[i])}°C`; const minTemp = document.createElement('p'); minTemp.textContent = `Mín: ${Math.round(data.daily.temperature_2m_min[i])}°C`; const weatherIcon = document.createElement('p'); weatherIcon.textContent = getWeatherDescription(data.daily.weathercode[i]); forecastDay.appendChild(dayTitle); forecastDay.appendChild(maxTemp); forecastDay.appendChild(minTemp); forecastDay.appendChild(weatherIcon); forecastContainer.appendChild(forecastDay); } }) .catch(error => { console.error('Erro ao buscar dados da previsão do tempo:', error); document.getElementById('description').textContent = 'Erro ao carregar dados.'; }); }); function getWeatherDescription(code) { const descriptions = { 0: 'Céu limpo', 1: 'Principalmente limpo', 2: 'Parcialmente nublado', 3: 'Nublado', 45: 'Nevoeiro', 48: 'Nevoeiro com geada', 51: 'Chuvisco leve', 53: 'Chuvisco moderado', 55: 'Chuvisco intenso', 56: 'Chuvisco gelado leve', 57: 'Chuvisco gelado intenso', 61: 'Chuva fraca', 63: 'Chuva moderada', 65: 'Chuva forte', 66: 'Chuva gelada fraca', 67: 'Chuva gelada forte', 71: 'Neve fraca', 73: 'Neve moderada', 75: 'Neve forte', 77: 'Grãos de neve', 80: 'Pancadas de chuva fracas', 81: 'Pancadas de chuva moderadas', 82: 'Pancadas de chuva violentas', 85: 'Pancadas de neve fracas', 86: 'Pancadas de neve fortes', 95: 'Trovoada', 96: 'Trovoada com granizo fraco', 99: 'Trovoada com granizo forte' }; return descriptions[code] || 'Condição desconhecida'; } ``` \ \ \