튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

奋力向前
풀어 주다: 2021-09-15 13:35:34
앞으로
2791명이 탐색했습니다.

이전 글 "HTML, CSS, JS를 사용하여 임의 비밀번호 생성기를 만드는 방법(공유)을 가르쳐주세요"에서는 html, css, js를 사용하여 임의 비밀번호 생성기를 만드는 방법을 소개했습니다. 다음 기사에서는 JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법을 함께 살펴보겠습니다.

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

오늘은 Weather API를 사용하여 모든 도시, 지역 또는 국가를 검색하고 현재 날씨를 얻을 수 있는 멋진 날씨 앱을 만들어 보겠습니다. 또한 세련미를 더하기 위해 Unsplash API를 사이트의 배경 이미지로 사용했는데, 이 이미지는 입력한 위치를 기반으로 합니다. 카드에 기울기 효과와 유리 모양을 추가했습니다. 이 프로젝트에서 사용할 프로그래밍 언어는 HTML, CSS, JS입니다. 그럼 가구구구 가자. Weather API获取其当前天气。此外,为了给它添加一些修饰,我还使用了Unsplash API作为网站的背景图片,这将基于您输入的位置。我为卡片添加了倾斜效果和玻璃化外观。我们将在这个项目中使用的编程语言是HTMLCSSJS。所以让我们咕咕咕。

看看我们将要实现的最终样子

演示地址:https://wanghao221.github.io/Weather.io/

bilibili展示视频:https://www.bilibili.com/video/BV1xX4y1c7Z4

注意:我在文中只提到了您应该/可能在代码中使用的几个关键点和步骤。因为,这是一个博客,而不是代码库,所以我想保持简洁。如果您想参考整个代码地址https://github.com/wanghao221/Weather.io  去看看吧!

第 1 步 - 设置环境并收集所有资源

使用您喜欢的代码编辑器,创建一个名为“Weather App”或任何您想要的名字,然后创建这三个文件并将这些资源添加到文件夹中:

  • index.html

  • style.css

  • script.js

我们需要的其他资源:

  • Favicon

  • Loading GIF (optional)

  • Vanilla-Tilt.js file

下载所有这些资源地址:https://download.csdn.net/download/qq_44273429/20463321

第 2 步 - 从 index.html 开始

从HTML 文件的常用模板开始。根据需要添加标题。 

在链接style.css和之前script.js,链接您想要的谷歌字体。我使用过Poppins字体,这是我比较喜欢的字体之一。(谷歌字体)

HTML

<link
href="https://fonts.googleapis.com/css2family=Poppins:ital,wght@0,200;0,400;0,500;0,600;0,700;0,800;0,900;1,800&display=swap"
rel="stylesheet">
로그인 후 복사

现在从body开始,如果您希望向您的网站添加加载程序,那么您可以将其添加到正文标签中,然后为其编写脚本。

HTML

<body onload="myFunction()">
로그인 후 복사

制作两个单独的div。一个用于heading title,一个用于卡片。在它下面添加合适的div标签。

这里我使用了一个SVG格式的搜索按钮。您可以将此代码用于卡片div中的按钮。

HTML

<button>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16" height="1em"
width="1.5em" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M10.442 10.442a1 1 0 011.415 0l3.85 3.85a1 1 0 01-1.414 1.415l-3.85-3.85a1 1 0 010-1.415z"
clip-rule="evenodd"></path>
<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 100-11 5.5 5.5 0 000 11zM13 6.5a6.5 6.5 0 11-13 0 6.5 6.5 0 0113 0z"
clip-rule="evenodd"></path>
</svg>
</button>
로그인 후 복사

为默认图标显示添加天气图标。

HTML

<div class="flex">
  <img src="https://openweathermap.org/img/wn/04d.png" alt="" class="icon" />
  <div class="description">多云</div>
</div>
로그인 후 복사

加载动画和Vanilla-Tilt js的脚本。在正文结束之前添加它。我在上面步骤 1 中提到的资源中添加了Vanilla-Tilt Js文件。

JS

<script>
        var preloader = document.getElementById(&#39;loading&#39;);
        function myFunction() {
            preloader.style.display = &#39;none&#39;;
        }
</script>
<script type="text/javascript" src="js/vanilla-tilt.js"></script>
    <script type="text/javascript">
        VanillaTilt.init(document.querySelector(".card"), {
            max: 15,
            glare: true,
            reverse: true,
            "max-glare": 0.5,
            speed: 400
        });
        VanillaTilt.init(document.querySelectorAll(".card"));
</script>
로그인 후 복사

第 3 步 - 设置索引文

从样式body和其他元素开始。

设置加载动画的样式。您可以使用此代码对其进行样式设置。由于加载动画具有白色背景,因此我使用了#fff。我在资源文件夹中添加了SVG图像。

CSS

#loading{
  position: fixed;
  width: 100%;
  height: 100vh;
  background: #fff url(&#39;/loading.svg&#39;)
  no-repeat center;
  z-index: 99999;
}
로그인 후 복사

请参阅Github存储库以获取 CSS 代码

地址:https://github.com/wanghao221/Weather.io

第 4 步 - 获取 Weather API 和 Unsplash API 密钥

前往OpenWeatherMap并创建一个帐户。登录后单击API Keys选项卡中的 ,您将看到API密钥。复制API Key并粘贴到下面提到的 JavaScript代码的第二行 (apiKey: " <Insert API Key here>",)

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)前往Unsplash Source。在这里,您可以看到如何根据大小、文本、用户的喜好、收藏等以不同的方式调用图片。

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

第 5 步 - 从 JavaScript 编码开始

JavaScipt中集成API对于学习如何为Web应用程序使用API

결국 우리가 무엇을 성취할지 보세요🎜🎜🎜데모 주소: https://wanghao221.github.io/Weather.io/🎜🎜🎜🎜bilibili 디스플레이 비디오: https://www.bilibili.com/video / BV1xX4y1c7Z4🎜🎜🎜🎜 참고: 이 문서에서는 코드에서 사용해야 하거나 사용할 수 있는 몇 가지 핵심 사항과 단계만 언급했습니다. 이것은 코드 기반이 아닌 블로그이므로 간단하게 유지하고 싶습니다. 전체 코드 주소 https://github.com/wanghao221/Weather.io를 참고하고 싶으시면 보러 가세요! 🎜🎜

1단계 - 환경 설정 및 모든 리소스 수집

🎜원하는 코드 편집기를 사용하여 "Weather App" 또는 원하는 대로 새 앱을 만든 다음 세 파일을 추가하고 다음 리소스를 폴더에 추가하세요: 🎜
  • 🎜index.html🎜
  • 🎜style .css🎜
  • 🎜script.js🎜
🎜필요한 기타 리소스: 🎜
  • 🎜 Favicon🎜
  • < li>🎜Loading GIF (선택 사항)🎜
  • 🎜Vanilla-Tilt.js 파일🎜
🎜🎜모든 리소스 주소를 다운로드하세요: https:/ /download.csdn.net/ download/qq_44273429/20463321🎜🎜

2단계 - index.html로 시작

🎜HTML 파일용 공통 템플릿으로 시작하세요. 원하는 경우 제목을 추가하세요. 🎜🎜style.cssscript.js를 연결하기 전에 원하는 Google 글꼴을 연결하세요. 저는 제가 가장 좋아하는 글꼴 중 하나인 Poppins 글꼴을 사용했습니다. (Google Fonts) 🎜🎜HTML🎜
let weather = {
  apiKey: "<Insert API Key here>",
  fetchWeather: function (city) {
    fetch(
      "https://api.openweathermap.org/data/2.5/weather?q=" +
        city +
        "&units=metric&appid=" +
        this.apiKey
    )
      .then((response) => response.json())
      .then((data) => this.displayWeather(data));
  },
  displayWeather: function (data) {
    const { name } = data;
    const { icon, description } = data.weather[0];
    const { temp, humidity } = data.main;
    const { speed } = data.wind;
    document.querySelector(".city").innerText = "Weather in " + name;
    document.querySelector(".icon").src =
      "https://openweathermap.org/img/wn/" + icon + ".png";
    document.querySelector(".description").innerText = description;
    document.querySelector(".temp").innerText = temp + "°C";
    document.querySelector(".humidity").innerText =
      "湿度: " + humidity + "%";
    document.querySelector(".wind").innerText =
      "风速: " + speed + " km/h";
    document.querySelector(".weather").classList.remove("loading");
    document.body.style.backgroundImage =
      "url(&#39;https://source.unsplash.com/1600x900/?city " + name + "&#39;)";
    document.body.style.backgroundRepeat = "none";
    document.body.style.backgroundSize = "100";
    document.body.style.width = "100%";
    document.body.style.height = "100%";
    document.body.style.backgroundRepeat = "no-repeat";
    document.body.style.backgroundSize = "cover";

  },
  search: function () {
    this.fetchWeather(document.querySelector(".search-bar").value);
  },
};

document.querySelector(".search button").addEventListener("click", function () {
  weather.search();
});

document
  .querySelector(".search-bar")
  .addEventListener("keyup", function (event) {
    if (event.key == "Enter") {
      weather.search();
    }
  });

weather.fetchWeather("Shanghai");
로그인 후 복사
로그인 후 복사
🎜 이제 body에서 시작하여 웹사이트에 로더를 추가하려면 이를 body 태그에 추가한 다음 스크립트를 작성하면 됩니다. 🎜🎜HTML🎜rrreee🎜두 개의 별도 div를 만듭니다. 하나는 제목용이고 다른 하나는 카드용입니다. 그 아래에 적절한 div 태그를 추가하세요. 🎜🎜여기에서는 SVG 형식의 검색 버튼을 사용합니다. 카드 div 내부의 버튼에 이 코드를 사용할 수 있습니다. 🎜🎜HTML🎜rrreee🎜기본 아이콘 표시에 날씨 아이콘을 추가하세요. 🎜🎜HTML🎜rrreee🎜 Vanilla-Tilt js용 애니메이션 및 스크립트를 로드하는 중입니다. 텍스트가 끝나기 전에 추가하세요. 위의 1단계에서 언급한 리소스에 Vanilla-Tilt Js 파일을 추가했습니다. 🎜🎜JS🎜rrreee

3단계 - 색인 텍스트 설정

🎜 body 및 기타 요소의 스타일을 지정하여 시작하세요. 🎜🎜애니메이션 로딩 스타일을 설정하세요. 이 코드를 사용하여 스타일을 지정할 수 있습니다. 로딩 애니메이션의 배경이 흰색이므로 #fff를 사용했습니다. 리소스 폴더에 SVG 이미지를 추가했습니다. 🎜🎜CSS🎜rrreee🎜🎜CSS 코드를 얻으려면 Github 저장소를 참조하세요🎜🎜주소: https://github.com/wanghao221/Weather.io🎜🎜

4단계 - Weather API 및 Unsplash API 키 얻기

🎜OpenWeatherMap으로 이동하여 계정을 만드세요. 로그인 후 API 키 탭을 클릭하면 API 키가 표시됩니다. API 키를 복사하여 아래에 언급된 JavaScript 코드의 두 번째 줄에 붙여넣습니다(apiKey: " <여기에 API 키 삽입>",</code). > )🎜🎜<img src="https://img.php.cn/upload/image/238/146/183/1631678774953818.png" title="1631678774953818.png" alt="위챗 스크린샷_20210915120609.png"/ > <code>Unsplash 소스로 이동하세요. 여기서는 크기, 텍스트, 사용자 기본 설정, 즐겨찾기 등에 따라 다양한 방식으로 이미지를 불러올 수 있는 방법을 확인할 수 있습니다. 🎜🎜위챗 스크린샷_20210915120729.png 🎜< h2>5단계 - JavaScript로 코딩 시작 🎜 애플리케이션용 코딩 방법을 알아보려면 JavaSciptAPI를 통합하세요. code>API가 중요합니다. 전체 코드를 나열했습니다. 이를 통해 코드를 이해할 수 있습니다. 🎜

我已将此调用"url(&#39;https://source.unsplash.com/1600x900/?city " + name + "&#39;)"用于背景图像。您可以根据需要自定义URL

我还使用了上海市的默认天气weather.fetchWeather("Shanghai");。您可以在此处添加任何城市的名称。每当您加载网站时,都会弹出这个城市的天气。

JS

let weather = {
  apiKey: "<Insert API Key here>",
  fetchWeather: function (city) {
    fetch(
      "https://api.openweathermap.org/data/2.5/weather?q=" +
        city +
        "&units=metric&appid=" +
        this.apiKey
    )
      .then((response) => response.json())
      .then((data) => this.displayWeather(data));
  },
  displayWeather: function (data) {
    const { name } = data;
    const { icon, description } = data.weather[0];
    const { temp, humidity } = data.main;
    const { speed } = data.wind;
    document.querySelector(".city").innerText = "Weather in " + name;
    document.querySelector(".icon").src =
      "https://openweathermap.org/img/wn/" + icon + ".png";
    document.querySelector(".description").innerText = description;
    document.querySelector(".temp").innerText = temp + "°C";
    document.querySelector(".humidity").innerText =
      "湿度: " + humidity + "%";
    document.querySelector(".wind").innerText =
      "风速: " + speed + " km/h";
    document.querySelector(".weather").classList.remove("loading");
    document.body.style.backgroundImage =
      "url(&#39;https://source.unsplash.com/1600x900/?city " + name + "&#39;)";
    document.body.style.backgroundRepeat = "none";
    document.body.style.backgroundSize = "100";
    document.body.style.width = "100%";
    document.body.style.height = "100%";
    document.body.style.backgroundRepeat = "no-repeat";
    document.body.style.backgroundSize = "cover";

  },
  search: function () {
    this.fetchWeather(document.querySelector(".search-bar").value);
  },
};

document.querySelector(".search button").addEventListener("click", function () {
  weather.search();
});

document
  .querySelector(".search-bar")
  .addEventListener("keyup", function (event) {
    if (event.key == "Enter") {
      weather.search();
    }
  });

weather.fetchWeather("Shanghai");
로그인 후 복사
로그인 후 복사

第 6 步 - 免费托管您的网站!

现在,当您完成编码后,您可以在您的网站上托管您自己的天气应用程序,或者您甚至可以在 Github 上免费托管它!!!

https://github.com/wanghao221/Weather.io

托管是可选的,但我建议将其发布并与您的朋友和家人共享,并将其添加到您的项目列表中。

即将推出的功能

这是我计划添加一些更酷的功能,例如

每当您打开网站时进行位置检测,它将显示其天气特定位置的相关天气新闻使背景图像更准确地显示位置使其对大多数设备(iPad 和平板电脑)的响应速度更快

项目中一些很酷的截图

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)

推荐学习:HTML/CSS视频教程JS视频教程

위 내용은 튜토리얼: JS와 API를 사용하여 날씨 웹 애플리케이션을 만드는 방법(컬렉션)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿