vue小案例天气查询
效果:在输入框输入地名,显示天气状况
页面比较粗糙,可进行优化美化。
<!DOCTYPE html>
<html lang="en">
<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>
<style>
* {
padding: 0;
margin: 0;
}
.w {
width: 1000px;
margin: 200px auto;
}
.logo {
width: 292px;
height: 80px;
background: url(./png/logo.png) no-repeat;
margin: 0px auto;
}
.search {
width: 700px;
height: 40px;
border: 1px solid #02ABE9;
margin: 30px auto 0 auto;
overflow: hidden;
}
.search input {
float: left;
width: 600px;
height: 40px;
border: 0 #02ABE9;
outline: none;
font-size: 20px;
margin-left: 20px;
}
button {
float: right;
width: 80px;
height: 40px;
border: none;
background: #02ABE9;
color: #fff;
font-size: 16px;
cursor: pointer;
line-height: 40px;
text-align: center;
outline: none;
}
.hotway {
margin-left: 170px;
}
.hotway a {
text-decoration: none;
margin-right: 10px;
font-size: 12px;
color: black;
}
.weather-list {
width: 1000px;
margin: 50px 110px;
}
.weather-list li {
width: 150px;
border-right: 1px solid #02ABE9;
height: 150px;
float: left;
height: 100px;
list-style: none;
}
.weather-list li p {
font-size: 18px;
color: orange;
text-align: center;
}
.clearfix:after,
.clearfix:before {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
</style>
</head>
<body>
<div id="app">
<div class="w">
<div class="logo"></div>
<div class="search">
<input type="text" @keyup.enter="searchWeather" v-model="city">
<button @click="searchWeather">搜索</button>
</div>
<div class="hotway">
<a href="#" @click="changeCity('北京')">北京</a>
<a href="#" @click="changeCity('上海')">上海</a>
<a href="#">南京</a>
<a href="#">江苏</a>
<a href="#">深圳</a>
</div>
<div class="weather-list clearfix">
<ul>
<li v-for='(item,index) in weathers'>
<p>{{item.type}}</p>
<p>{{item.low}}</p>
<p>{{item.high}}</p>
<p>{{item.date}}</p>
</li>
</ul>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
var app = new Vue({
el: '#app',
data: {
city: '',
weathers: []
},
methods: {
searchWeather: function() {
http: //wthrcdn.etouch.cn/weather_mini
var that = this;
axios.get("http://wthrcdn.etouch.cn/weather_mini?city=" + this.city)
.then(function(response) {
console.log(response)
that.weathers = response.data.data.forecast;
}, function(err) {
})
},
changeCity: function(city) {
this.city = city;
this.searchWeather();
},
},
})
</script>
</body>
</html>
天气查询接口:
http://wthrcdn.etouch.cn/weather_mini
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
两个在线环境