,
					
				
				
				
					
					oC
				
				
				
					
						
						
					
					
						
						
					
					
						
						
					
				
			
		
		
	 
				
			
		
				
					* {
	padding: 0;
	margin: 0;
	box-sizing: border-box;
	font-family: sans-serif;
}
body {
	height: 100vh;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}
body.hot {
	background: linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 1)),
		url(hot.png) no-repeat center/cover;
}
body.hot #weather {
	background-image: url(hot.png);
}
body.cold {
	background: linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 1)),
		url(cold.png) no-repeat center/cover;
}
body.cold #weather {
	background-image: url(cold.png);
}
#weather {
	min-width: 350px;
	height: 600px;
	background: no-repeat center/cover;
	text-align: center;
	padding: 30px 20px;
	border-radius: 10px;
	transition: 0.4s;
}
#weather input {
	padding: 10px 20px;
	background-color: rgba(255, 255, 255, 0.4);
	font-size: 19px;
	box-shadow: 0 5px 4px rgba(0, 0, 0, 0.2);
	border: none;
	outline: none;
	border-radius: 0px 15px 0 15px;
	margin-bottom: 40px;
	width: 100%;
	transition: 0.4s;
}
#weather input:focus {
	background-color: rgba(255, 255, 255, 0.8);
	border-radius: 15px 0 15px 0;
}
#weather .content {
	color: white;
}
#weather .content .name {
	white-space: nowrap;
	font-size: 35px;
	text-shadow: 2px 2px rgba(0, 0, 0, 0.5);
}
#weather .content .time {
	font-size: 15px;
	margin: 6px 0;
}
#weather .content .temperature {
	font-size: 65px;
	text-shadow: 4px 4px rgba(0, 0, 0, 0.6);
	display: inline-block;
	padding: 20px;
	background-color: rgba(255, 255, 255, 0.4);
	border-radius: 15px;
	box-shadow: 2px 2px 0 2px rgba(0, 0, 0, 0.5);
	margin: 20px 0 30px;
	font-weight: 800;
}
#weather .content .short-desc {
	font-size: 40px;
	font-weight: 600;
	text-shadow: 3px 3px rgba(0, 0, 0, 0.4);
}
#weather .content .more-desc {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 40px;
}
#weather .content .more-desc > div {
	font-size: 16px;
	display: flex;
	flex-direction: column;
}
#weather .content .more-desc > div span {
	margin-top: 15px;
}
 
				
			
		
				
					const input = document.querySelector('.input-search')
function changeWeatherUI(weather) {
	const city = document.querySelector('.name .city')
	const country = document.querySelector('.name .country')
	const time = document.querySelector('.time')
	const temperature = document.querySelector('.temperature .value')
	const shortDesc = document.querySelector('.short-desc')
	const visibility = document.querySelector('.visibility span')
	const wind = document.querySelector('.wind span')
	const cloud = document.querySelector('.cloud span')
	city.innerHTML = weather.name
	country.innerHTML = weather.sys.country
	time.innerHTML = new Date().toLocaleString()
	shortDesc.innerHTML = weather.weather[0].main
	const temp = Math.round(weather.main.temp)
	temperature.innerHTML = temp
	temp >= 18
		? (document.body.className = 'hot')
		: (document.body.className = 'cold')
	visibility.innerHTML = weather.visibility + ' (m)'
	wind.innerHTML = weather.wind.speed + ' (m/s)'
	cloud.innerHTML = weather.clouds.all + ' (%)'
}
input.addEventListener('keyup', (e) => {
	if (e.keyCode === 13) {
		getWeather(e.target.value)
	}
})
async function getWeather(input) {
	const url = `https://api.openweathermap.org/data/2.5/weather?q=${input}&units=metric&appid=d78fd1588e1b7c0c2813576ba183a667`
	const res = await fetch(url)
	const weather = await res.json()
	changeWeatherUI(weather)
}
getWeather('ha noi')
 
				
			
		LỘ TRÌNH LÊN FULLSTACK, trọn bộ serial course Pro HTML,CSS,JAVASCRIPT MIỄN PHÍ :
HTML : HTML căn bản cho người mới bắt đầu
CSS : CSS căn bản cho người mới bắt đầu
JS: Javascript cho người mới bắt đầu
 
				
