WEBLEB
Inicio
Editora de código
Iniciar sesión
Pro
Español
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Sitio web del tiempo
1258
Andev.web
Abrir en el editor
Publica tu código
¿Necesitas un sitio web?
Recomendado
5 March 2025
Sitio web del planificador de citas
6 November 2024
Plantilla de sitio web de portafolios para desarrolladores
7 July 2025
Indicador del menú de navegación
HTML
Copy
Andev Web
London
31
o
overcast clouds
clouds
98
%
humidity
98
%
pressure
1011
hPa
CSS
Copy
body{ margin: 0; min-height: 100vh; display: flex; justify-content: center; align-items: center; background-image: linear-gradient( to bottom, #dcdcdc 50%, #e9e9e9 50% ); font-family: sans-serif; } *{ padding: 0; margin: 0; } main{ width: 300px; height: max-content; min-height: 300px; background-color: #f7f7f7; border-radius: 30px; box-shadow: 0 30px 50px #5553; padding: 30px; box-sizing: border-box; } main form{ border: 1px solid #5552; display: flex; border-radius: 30px; justify-content: space-between; } main form input, main form button{ border: none; background-color: transparent; outline: none; padding: 10px; box-sizing: border-box; } main form i{ opacity: 0.7; } main .result{ padding-top: 20px; text-align: center; } main .result .name{ font-weight: bold; font-size: large; display: flex; justify-content: center; align-items: center; gap: 10px; } main .temperature img{ width: 150px; filter: drop-shadow(0 10px 50px #555); } main .temperature figcaption{ font-size: 3em; } main .description{ padding: 10px 0 30px; } main ul{ list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } main li{ background-color: #f78a55; color: #fff; border-radius: 10px; padding: 20px 10px; background-image: linear-gradient( to bottom, transparent 50%, #0003 50% ); font-weight: bold; font-size: small; } main ul li i{ font-size: 2em; margin: 20px 0; display: block!important; } main li:nth-child(2){ background-color: #b56291; } main li:nth-child(3){ background-color: #48567b; } main.error{ animation: errorEffect 0.3s linear 1; } @keyframes errorEffect{ 0%{ transform: translate(10px, 5px) } 25%{ transform: translate(-5px, 0) } 50%{ transform: translate(8px, 2px) } 75%{ transform: translate(-2px, 5px) } 100%{ transform: translate(0, 0); } }
JS
Copy
let id = '9505fd1df737e20152fbd78cdb289b6a'; let url = 'https://api.openweathermap.org/data/2.5/weather?units=metric&appid=' + id; let city = document.querySelector('.name'); let form = document.querySelector("form"); let temperature = document.querySelector('.temperature'); let description = document.querySelector('.description'); let valueSearch = document.getElementById('name'); let clouds = document.getElementById('clouds'); let humidity = document.getElementById('humidity'); let pressure = document.getElementById('pressure'); let main = document.querySelector('main'); form.addEventListener("submit", (e) => { e.preventDefault(); if(valueSearch.value != ''){ searchWeather(); } }); const searchWeather = () => { fetch(url+'&q='+ valueSearch.value) .then(response => response.json()) .then(data => { console.log(data); if(data.cod == 200){ city.querySelector('figcaption').innerHTML = data.name; city.querySelector('img').src = `https://flagsapi.com/${data.sys.country}/shiny/32.png`; temperature.querySelector('img').src = `https://openweathermap.org/img/wn/${data.weather[0].icon}@4x.png`; temperature.querySelector('span').innerText = data.main.temp; description.innerText = data.weather[0].description; clouds.innerText = data.clouds.all; humidity.innerText = data.main.humidity; pressure.innerText = data.main.pressure; }else{ main.classList.add('error'); setTimeout(() => { main.classList.remove('error'); }, 1000); } valueSearch.value = ''; }) } const initApp = () => { valueSearch.value = 'Washington'; searchWeather(); } initApp();