vue 项目 web端如何实现天气预报2

在web段实现天气展示
首先我们要获取到天气信息,我们可以请求下面的接口

在这里插入图片描述

访问上面的接口后,可以看到返回值,拿到返回值后对数据进行处理和渲染就可以了

在这里插入图片描述

注意:通过返回值我们可以看到,wea_img的属性值是汉语拼音’yu’,
我们如果想要展示气象图片的话就需要将各种天气的图片放在public文件夹下
在这里插入图片描述
在使用图片的时候通过绑定src属性拼接路径拿到展示的图片,具体代码在下面 有注释。

js代码
export function getSevenDaysWeather(query) {
  const url = 'https://tianqiapi.com/api?' + $.param(query)
  return axios.get(url)
}
<script>
import { getSevenDaysWeather } from '@/api/weather'
export default {
  data() {
    return {
      weather: {},
      weaImgPrefix: 'img/weather/'  // 图片放置的路径
    }
  },
  created() {
    this.initWeather()
  },
  methods: {
    async initWeather() {
      const WEATHER_PARAMS = {
        appid: '25592716',
        appsecret: 'gcJK4Gm7',
        version: 'v1',
        vue: 1
      }
      const result = await getSevenDaysWeather(WEATHER_PARAMS)
      if (result) {
        this.weather = result.data.data.splice(0, 1)
      }
    }
  }
}
</script>
html代码
<template>
  <div class="wraper">
    <div class="header">气象信息</div>
    <div v-for="item in weather" :key="item.air" class="main">
      <div class="image">
       	// 绑定src属性 拼接路径
        <img :src="weaImgPrefix + item.wea_img + '.png'" alt="">
        <div class="wea">{{ item.wea }}</div>
      </div>
      <div class="infos">
        <div class="date">{{ item.date }}</div>
        <div class="temperature"><span class="tem">{{ item.tem }}</span>(实时)</div>
        <div class="limit">{{ item.tem2 }}-{{ item.tem1 }}</div>
        <div class="cloud">{{ item.win[0] }}{{ item.win_speed }}</div>
        <div class="card">
          <span>{{ item.air }}</span>
          <span>{{ item.air_level }}</span>
        </div>
      </div>
    </div>
  </div>
</template>
css代码
<style lang="scss" scoped>
  @import '@/styles/mixin.scss';
  .wraper {
    @include wraper;
    font-family: PingFangSC-Semibold;
  }
  .header {
    @include header;
  }
  .main {
    width: 100%;
    height: calc(100% - 72px);
    display: flex;
    .image {
      width: 50%;
      height: 100%;
      img {
        width: 210px;
        height: 210px;
      }
      .wea {
        margin-top: 20px;
        font-size: 16px;
      }
    }
    .infos {
      width: 50%;
      height: 100%;
      font-size: 16px;
      text-align: left;
      padding: 15px 0 0 45px;
      .temperature {
        margin: 13px 0;
        .tem {
          display: inline-block;
          font-size: 38px;
          color: #FFFFFF;
        }
      }
      .cloud {
        margin: 26px 0;
      }
      .card {
        width: 83px;
        height: 40px;
        background: #4A90E2;
        border-radius: 5px;
        display: flex;
        justify-content: space-around;
        align-items: center;
      }
    }
  }
</style>

实现效果

在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值