<div class="view">
<h2>WeatherLy</h2>
<form>
<div class="search">
<input placeholder="Enter a Location" type="text" id="query">
<button>Submit</button>
</div>
</form>
<div class="details">
<div class="img">
<img src="" alt="weather-icon" class="icon">
</div>
<div class="weather">
<div class="location">
<span class="material-icons">
place
</span>
<h3>Location </h3>
<span class="name"></span>
</div>
<div class="temperature">
<span class="material-icons">
thermostat
</span>
<h3>Temperature </h3>
<span class="temp"></span>
</div>
<div class="description">
<span class="material-icons">
air
</span>
<h3>Wind Speed </h3>
<span class="desc"></span>
</div>
</div>
</div>
</div>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: "Montserrat", sans-serif;
background: #17427a;
color: #f4f4f4;
}
.view {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
flex-direction: column;
}
h2 {
padding: 10px;
font-size: 32px;
}
form .search {
padding: 20px;
display: flex;
flex-direction: column;
}
form .search input {
all: unset;
padding: 10px;
background: #f6f6f6;
color: #222222;
border-radius: 4px;
margin-bottom: 10px;
}
form .search button {
all: unset;
padding: 10px 30px;
background: linear-gradient(135deg, #2685a2 -50%, #286fe0 180%);
border-radius: 4px;
cursor: pointer;
font-weight: bold;
transition: all 200ms ease-in-out;
}
form .search button:hover {
transform: scale(1.03);
}
.details {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin: 10px;
width: 100%;
visibility: hidden;
}
.details .img {
margin: 10px;
background: #bbbbbb;
border-radius: 4px;
box-shadow: 0px 0px 10px #ffffff50;
}
.details .weather {
display: flex;
align-items: center;
flex-wrap: wrap;
margin: 20px;
width: 100%;
justify-content: space-around;
}
.details .weather div {
width: 30%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
.details .weather div span {
margin-bottom: 10px;
font-size: 32px;
}
const btn = document.querySelector("button");
const details = document.querySelector(".details");
const name = document.querySelector(".name");
const tempC = document.querySelector(".temp");
const desc = document.querySelector(".desc");
const iconHolder = document.querySelector(".icon");
const api = "fabbc03382cd7ff0af9f209fac9d566c";
const input = document.querySelector("#query");
btn.addEventListener("click", (e) => {
e.preventDefault();
const query = input.value;
const url = `https://api.openweathermap.org/data/2.5/weather?q=${encodeURIComponent(
query
)}&appid=${api}&units=metric`;
console.log(url);
fetch(url)
.then((res) => {
return res.json();
})
.then((data) => {
const temp = data.main.temp;
const place = data.name;
const { description, icon } = data.weather[0];
const { speed } = data.wind;
const iconUrl = `http://openweathermap.org/img/wn/${icon}@2x.png`;
tempC.textContent = `${temp}°C`;
name.textContent = `${place}`;
desc.textContent = `${speed}`;
iconHolder.src = iconUrl;
details.style.visibility = "visible";
})
.catch((err) => alert("Enter valid address!"));
input.value = "";
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.