查天气(Vue.js,Element UI)

 演示图

几点注意

  1. 有亿点简陋,凑合能用,button一定要 !important 覆盖原本的 element ui ,不然无效
  2. axios回调函数中 this 指向改变了,需要额外的保存一份
  3. 服务器返回的数据比较复杂时,获取的时候需要注意层级结构
  4. methods 中定义的方法内部,可以通过 this 关键字点出其他的方法
  5. 使用的是和风天气API,可以免费申请哦

完整代码

html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>查天气</title><link rel="stylesheet" href="css/index.css" /><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"></head><body><div id="app"><div class="logo"><img src="img/logo.png" alt="logo" /></div><div class="header"><!-- 搜索框 --><div class="input_group"><el-input class="input_border" v-model="city" placeholder="请输入查询的城市"@keyup.enter.native="queryWeather"></el-input><el-button class="input_sub" @click="queryWeather">搜索</el-button></div><!-- 热门城市 --><el-row class="hotkey-container"><el-tag class="hotkey" v-for="city in hotCitys" :key="city" @click="clickSearch(city)">{{ city}}</el-tag></el-row></div><!-- 天气列表 --><ul class="weather_list"><li v-if="weatherData" v-for="(day, index) in weatherData" :key="index"><!-- 天气 --><div class="info_type"><span class="iconfont">{{ day.textDay }}</span></div><!-- 温度 --><div class="info_temp"><b>{{ day.tempMin }}</b> ~ <b>{{ day.tempMax }}</b> °C</div><!-- 日期 --><div class="info_date"><span>{{ day.fxDate }}</span></div><!-- 空气质量 --><div class="quality"><p>空气质量指数: {{ airQualities[index].aqi }}</p><p>空气质量级别: {{ airQualities[index].category }}</p></div></li></ul></div><!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src="https://unpkg.com/vue/dist/vue.js"></script><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script src="https://unpkg.com/element-ui/lib/index.js"></script><script src="./查天气.js"></script></body>
</html>

css 

/* 设置 Logo 图片的样式 */
.logo img {display: block;/* 将图片显示为块级元素 */weight: 130px;height: 130px;margin: 30px auto;/* border: #666 1px solid; */
}/* 搜索框和热门城市 */
.header {width: 600px;margin: 0 auto;
}/* 设置表单组的样式 */
.input_group {display: flex;
}/* 设置文本输入框的样式 */
.input_border {width: 500px;
}/* 设置提交按钮的样式 */
.input_sub {width: 100px;color: #fff !important;background-color: #dca6e2 !important;/* 使用 !important 来覆盖 Element UI 默认样式 */
}/* 热门城市容器 */
.hotkey-container {/* margin:0 auto; */width: 310px;
}/* 热门城市 */
.hotkey {margin: 2px;cursor: pointer;color: #fff !important;background-color: #e3b7df !important;
}/* 热门城市,搜索按钮点击变暗 */
.hotkey:active,
.input_sub:active {opacity: 0.8; /* 设置点击时的透明度 */
}/* 设置天气列表的样式 */
.weather_list {/* border: 1px solid #cc91d3; */height: 200px;text-align: center;/* 文字居中 */margin-top: 50px;font-size: 0px;/* 字体大小为0,避免列表项之间出现间隙 */
}/* 设置天气列表中每个天气项的样式 */
.weather_list li {display: inline-block;/* 内联块元素 */color: #E38EFF;font-size: 33px;line-height: 40px;width: 180px;height: 250px;padding: 0 10px;overflow: hidden;position: relative;/* 相对定位 */background: url('../img/line.png') right center no-repeat;background-size: 1px 200px;/* border:1px solid #666; */
}/* 最后一个天气列表项不显示背景 */
.weather_list li:last-child {background: none;
}/* 设置天气温度的样式 */
.info_temp {font-size: 18px;color: #f692ce;/* border:1px solid #8e3a3a; */
}/* 日期 */
.info_date {width: 100%;color: #999;font-size: 16px;/* border:1px solid #8e3a3a; */
}/* 设置空气质量的样式 */
.quality {position: absolute;/* 绝对定位 */left: 0;/* 左边距为0 */top: 122px;line-height: 15px;color: #666;/* 文字颜色 */font-size: 15px;/* 文字大小 */width: 100%;/* 宽度100% */text-align: center;/* 文字居中对齐 *//* border:1px solid #8e3a3a; */
}

 js

new Vue({el: "#app",data: {city: "北京",weatherData: null,airQualities: null, // 添加空气质量数据hotCitys: ["北京", "上海", "广州", "深圳"],apiKey: "xxxxxxx" // 直接将 API 密钥硬编码到 JavaScript 中},methods: {// 查询天气queryWeather() {axios.get(`https://geoapi.qweather.com/v2/city/lookup?key=${this.apiKey}&location=${encodeURIComponent(this.city)}`).then(res => {const locationData = res.data.location[0];const cityId = locationData.id;// 获取天气数据this.fetchWeatherData(cityId);// 获取空气质量数据this.fetchAirQuality(cityId);}).catch(err => {console.log(err);});},// 获取天气数据fetchWeatherData(cityId) {axios.get(`https://devapi.qweather.com/v7/weather/3d?key=${this.apiKey}&location=${cityId}`).then(res => {this.weatherData = res.data.daily;}).catch(err => {console.log(err);});},// 获取空气质量数据fetchAirQuality(cityId) {axios.get(`https://devapi.qweather.com/v7/air/5d?key=${this.apiKey}&location=${cityId}`).then(res => {this.airQualities = res.data.daily;}).catch(err => {console.log(err);});},// 点击搜索clickSearch(city) {this.city = city;this.queryWeather();}}
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gdb相关指令

背景知识 通过上图&#xff0c;可以看到&#xff0c;gcc 和 g 默认形成的可执行程序是release的&#xff01;&#xff01;&#xff01;故无法直接被调试。因此带 -g 选项表示使用 Debug 模式进行编译&#xff0c;而且我们可以看到&#xff0c;Debug 模式下编译形成的可执…

C语言之_Generic用法实例(九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

5GNR刷题

5G帧结构 5G NR帧结构的基本时间单位是( C ) A) subframe B) slot C) Tc D) symbol 5G无线帧长是多少ms&#xff08;B&#xff09; A) 5 B) 10 C) 20 D) 40 下面哪种子载波间隔是中国移动白皮书中规定必选(B ) A) 15KHz B) 30KHz C) 60KHz D) 120KHz 5G参数集包含哪…

Java-博客系统(前后端交互)

目录 前言 博客系统基本情况 1 创建项目&#xff0c;引入依赖 2 数据库设计 2.1 分析 2.2 建库建表 3 封装数据库 3.1 在java目录下创建DBUtil类&#xff0c;通过这个类对数据库进行封装 3.2 在java目录下创建实体类&#xff08;博客类Blog&#xff09; 3.2 在java目录下创建…

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

点击MFT的桌面快捷方式,启动MFT (1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图 (2)项目设置。项目可以命名为Test;系统选项按默认设置,见下图;发射点可以选择。 飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然…

Zynq学习笔记--Vivado中自定义IP核

目录 1. 概述 2. IP Packager 重要参数 2.1 参数说明 3. AXI4 Lite 写操作逻辑 3.1 写数据请求发起 3.2 写响应通道握手 3.3 从机锁存数据 3.4 地址和数据处理 3.5 地址空间详解 4. 写入和读取请求 4.1 寄存器写入逻辑 4.2 写操作握手 4.3 读请求发起 4.4 读操作…

MySQL-变量、流程控制与游标:变量、定义条件与处理程序、流程控制

变量、流程控制与游标 变量、流程控制与游标1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量 2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4…

政安晨:【Keras机器学习实践要点】(三十)—— 使用斯温变换器进行图像分类

目录 设置 配置超参数 准备数据 辅助函数 基于窗口的多头自注意力计算 模型训练与评估 准备 tf.data.Dataset 建立模型 在 CIFAR-100 上训练 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政…

深入微服务框架:构建高效、可扩展与弹性的现代应用架构

前言&#xff1a;当今快速迭代和多变的商业环境中&#xff0c;传统的单体应用程序面临着一系列挑战&#xff0c;包括难以管理复杂性、缺乏灵活性以及无法有效扩展等问题。随着业务需求的不断增长和技术栈的不断演进&#xff0c;企业亟需一种更加模块化、易于管理和扩展的应用程…

【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建表模拟…

LLM生成模型在生物单细胞single cell的应用:scGPT

参考&#xff1a; https://github.com/bowang-lab/scGPT https://www.youtube.com/watch?vXhwYlgEeQAs 主要是把单细胞测序出来的基因表达量的拼接起来构建成的序列&#xff0c;这里不是用的基因的ATCG&#xff0c;是直接用的基因名称 训练数据&#xff1a;scGPT全人模型是在3…

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …