날씨앱

Noh Sinyoung·2023년 6월 14일
0
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <link rel="stylesheet" href="0517 날씨앱.css">

</head>
<body>
    <div class="container">
        <header class="header">
            <h1>전 세계 날씨 검색</h1>
            <select name="" id="">
                <option value="seoul">서울</option>
                <option value="osaka">오사카</option>
                <option value="fukuoka">후쿠오카</option>
                <option value="venezia">베네치아</option>
                <option value="busan">부산</option>
                <option value="new york">뉴욕</option>
            </select>
        </header>

        <div class="main">
            <h3 class="region">서울 중구</h3>
            <p class="temp"><span>30</span>&deg;C</p>
            <img class="icon" src="data:image/png;base64,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" width="80px" alt="날씨아이콘">
            <div class="detail">
                <span class="feel">체감온도<span>0</span>&deg;C</span>
                <span class="wind">풍속<span>0</span>m/s</span>
            </div>
        </div>

    </div>

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
        const KEY = "47c44037a668e7569c5d4687b724255e"
        const 도시이름 = document.querySelector(".region")
        const 기온 = document.querySelector(".temp span")
        const 체감온도 = document.querySelector(".feel span")
        const 풍속 = document.querySelector(".wind span")
        const 이미지 = document.querySelector(".icon")

        //디폴트
        axios.get(`https://api.openweathermap.org/data/2.5/weather?q=seoul&appid=${KEY}`)
        .then(function (response) {
            // 성공 핸들링
            console.log(response);

            도시이름.innerHTML = response.data.name
            기온.innerHTML = (response.data.main.temp - 273).toFixed(1)
            체감온도.innerHTML = (response.data.main.feels_like - 273).toFixed(1)
            풍속.innerHTML = response.data.wind.speed
            이미지.setAttribute("src", `https://openweathermap.org/img/wn/${response.data.weather[0].icon}@2x.png`)

            console.log("도시 이름", response.data.name)
            console.log("기온", response.data.main.temp)
            console.log("체감온도", response.data.main.feels_like)
            console.log("풍속", response.data.wind.speed)
        })

        //let API = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${KEY}`
    
        const 셀렉 = document.querySelector("select")
        셀렉.addEventListener("change", (e) => {
            console.log(e)
            // e.target.value에 option의 value가 들어있음

            axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${e.target.value}&appid=${KEY}`)
            .then(function (response) {
                // 성공 핸들링
                console.log(response);

                도시이름.innerHTML = response.data.name
                기온.innerHTML = (response.data.main.temp - 273).toFixed(1)
                체감온도.innerHTML = (response.data.main.feels_like - 273).toFixed(1)
                풍속.innerHTML = response.data.wind.speed
                이미지.setAttribute("src", `https://openweathermap.org/img/wn/${response.data.weather[0].icon}@2x.png`)

                console.log("도시 이름", response.data.name)
                console.log("기온", response.data.main.temp)
                console.log("체감온도", response.data.main.feels_like)
                console.log("풍속", response.data.wind.speed)
            })
            .catch(function (error) {
                // 에러 핸들링
                console.log(error);
            })
        })
 

    </script>


</body>
</html>

==================================================================================================

* {margin: 0; padding: 0;}

/* 이 부분은 상단 메뉴 부분 */

.header {
    background-color: rgb(80, 140, 218);
    display: flex; justify-content: space-between;
    padding: 20px;
}

h1 {
    color: rgb(255, 255, 255);
}

select {
    width: 200px;
}

.main {
    position: relative; top: 400px;
    display: flex; justify-content: center; align-items: center;
    flex-direction: column;
}

.region {
    font-size: 40pt; color: darkcyan;
}
.temp span {font-size: 60pt;}
.temp {
    font-size: 30pt;
}

.detail {
    display: flex;
}

.detail > span {
    background-color: deepskyblue; color: white;
    border-radius: 8px; padding: 5px; margin: 10px;
}

0개의 댓글