资讯专栏INFORMATION COLUMN

HTML5 天气预报应用

hankkin / 2819人阅读

摘要:实现输入城市名称,通过的来获取当前城市的天气情况。页面展示效果代码北京

jQuery实现输入城市名称,通过yahoo的Weather API来获取当前城市的天气情况。
页面展示效果:

HTML

</>复制代码

  1. C

CSS

</>复制代码

  1. html,
  2. body {
  3. background-color: #F5F8FC;
  4. height: 100%;
  5. width: 100%;
  6. overflow: hidden;
  7. font-family: "Open Sans", sans-serif;
  8. }
  9. .info p {
  10. text-align: center;
  11. margin: 10px auto 0px auto;
  12. width: 540px;
  13. color: #4c4c4c;
  14. font-size: 16px;
  15. font-weight: bold;
  16. }
  17. .wrapper {
  18. position: absolute;
  19. left: 0;
  20. right: 0;
  21. top: 0;
  22. bottom: 0;
  23. margin: auto;
  24. max-width: 100%;
  25. max-height: 100%;
  26. overflow: auto;
  27. height: 500px;
  28. }
  29. .shadow {
  30. -webkit-box-shadow: 0px 30px 100px 1px rgba(180, 180, 180, 1);
  31. -moz-box-shadow: 0px 30px 100px 1px rgba(180, 180, 180, 1);
  32. box-shadow: 0px 30px 100px 1px rgba(180, 180, 180, 1);
  33. }
  34. .top {
  35. position: relative;
  36. z-index: 0;
  37. background-color: #61c3e6;
  38. height: 300px;
  39. overflow: hidden;
  40. text-align: center;
  41. display: inline-block;
  42. width: 100%;
  43. float: left;
  44. }
  45. .top .btn {
  46. text-align: center;
  47. line-height: 25px;
  48. position: absolute;
  49. color: white;
  50. font-weight: bold;
  51. font-size: 20px;
  52. border-radius: 50%;
  53. border: 1px solid white;
  54. top: 5px;
  55. left: 740px;
  56. cursor: pointer;
  57. text-transform: uppercase;
  58. }
  59. .top img {
  60. position: relative;
  61. z-index: -1;
  62. margin-top: -10px;
  63. margin-bottom: 10px;
  64. width: 275px;
  65. -webkit-filter: invert(100%);
  66. -moz-filter: invert(100%);
  67. filter: invert(100%);
  68. }
  69. .top .deg {
  70. font-weight: bold;
  71. }
  72. .top .text {
  73. text-align: center;
  74. color: white;
  75. margin-bottom: 15px;
  76. margin-top: -70px;
  77. font-size: 25px;
  78. }
  79. .top .text-city{
  80. text-align: center;
  81. color: white;
  82. margin-bottom: 10px;
  83. font-size: 25px;
  84. }
  85. .top input {
  86. position: relative;
  87. z-index: 1;
  88. font-family: "Open Sans", sans-serif;
  89. width: 210px;
  90. background-color: rgba(0, 0, 0, 0);
  91. border-top: 0px;
  92. border-right:0px;
  93. border-left:0px;
  94. border-bottom:1px solid #F5F8FC;
  95. outline: 0;
  96. }
  97. .top input:focus {
  98. outline: 0;
  99. border: 0px;
  100. }
  101. .bot {
  102. float: left;
  103. background-color: white;
  104. height: 200px;
  105. overflow: hidden;
  106. display: inline-block;
  107. width: 100%;
  108. }
  109. .bot ul {
  110. overflow: hidden;
  111. display: inline-block;
  112. width: 100%;
  113. height: 100%;
  114. list-style-type: none;
  115. padding-top: 30px;
  116. }
  117. .bot ul li {
  118. color: #999999;
  119. float: left;
  120. width: 20%;
  121. text-align: center;
  122. }
  123. .bot ul li:nth-child(1) {
  124. color: #4c4c4c;
  125. }
  126. .bot ul li h1 {
  127. text-transform: uppercase;
  128. font-weight: bold;
  129. }
  130. .bot ul li p {
  131. font-weight: bold;
  132. }
  133. .bot ul li img {
  134. -webkit-filter: invert(60%);
  135. -moz-filter: invert(60%);
  136. filter: invert(60%);
  137. }
  138. .bot ul li:first-child img {
  139. -webkit-filter: invert(30%);
  140. -moz-filter: invert(30%);
  141. filter: invert(30%);
  142. }

javascript代码

</>复制代码

  1. var baseYahooURL = "https://query.yahooapis.com/v1/public/yql?q="
  2. var selectedCity = "北京";
  3. var placeholder = "";
  4. var unit = "c";
  5. $(function(){
  6. init();
  7. })
  8. function init() {
  9. getWoeid(selectedCity);
  10. $("#city").keypress(function() {
  11. if (event.which == 13) {
  12. selectedCity = $("#city").val();
  13. getWoeid(selectedCity);
  14. $("#city").blur();
  15. }
  16. });
  17. $("#btn").click(function() {
  18. if ($("#btn").html() == "F") {
  19. unit = "c";
  20. } else unit = "f";
  21. $("#btn").html(unit.toUpperCase());
  22. getWoeid(selectedCity);
  23. })
  24. $("#city").focus(function(event) {
  25. placeholder = $("#city").val();
  26. $("#city").val("");
  27. $("#city").css("border-bottom", "1px solid #F5F8FC");
  28. });
  29. $("#city").blur(function(event) {
  30. if ($("#city").val() == "") {
  31. $("#city").val(placeholder);
  32. }
  33. });
  34. }
  35. function getWoeid(city) {
  36. var woeidYQL = "select woeid from geo.placefinder where text="" + city + ""&format=json";
  37. var jsonURL = baseYahooURL + woeidYQL;
  38. $.getJSON(jsonURL, woeidDownloaded);
  39. }
  40. function woeidDownloaded(data) {
  41. var woeid = null;
  42. if (data.query.count <= 0) {
  43. $("#city").val("No city found");
  44. $("#deg").html("");
  45. setImage(999, $("#big")[0]);
  46. for (var i = 0; i <= 4; i++) {
  47. $("#forecast" + i).html("");
  48. setImage(999, $("#forecastimg" + i)[0]);
  49. $("#forecastdeg" + i).html("");
  50. }
  51. return;
  52. } else if (data.query.count == 1) {
  53. woeid = data.query.results.Result.woeid;
  54. } else {
  55. woeid = data.query.results.Result[0].woeid;
  56. }
  57. getWeatherInfo(woeid);
  58. }
  59. function getWeatherInfo(woeid) {
  60. var weatherYQL = "select * from weather.forecast where woeid=" + woeid + " and u = "" + unit + "" &format=json";
  61. var jsonURL = baseYahooURL + weatherYQL
  62. $.getJSON(jsonURL, weaterInfoDownloaded);
  63. }
  64. function weaterInfoDownloaded(data) {
  65. $("#city").val(selectedCity);
  66. //$("#city").val(data.query.results.channel.location.city);
  67. $("#deg").html(data.query.results.channel.item.condition.temp + " °" + unit.toUpperCase());
  68. setImage(data.query.results.channel.item.condition.code, $("#big")[0]);
  69. for (var i = 0; i <= 4; i++) {
  70. var fc = data.query.results.channel.item.forecast[i];
  71. $("#forecast" + i).html(fc.day);
  72. setImage(fc.code, $("#forecastimg" + i)[0]);
  73. $("#forecastdeg" + i).html((parseInt(fc.low) + parseInt(fc.high)) / 2 + " °" + unit.toUpperCase());
  74. }
  75. }
  76. function setImage(code, image) {
  77. image.src = "http://www.hubwiz.com/course/55a60445a164dd0d75929fbd/";
  78. switch (parseInt(code)) {
  79. case 0:
  80. image.src += "images/icons/Tornado.svg"
  81. break;
  82. case 1:
  83. image.src += "images/icons/Cloud-Lightning.svg"
  84. break;
  85. case 2:
  86. image.src += "images/icons/Wind.svg"
  87. break;
  88. case 3:
  89. image.src += "images/icons/Cloud-Lightning.svg"
  90. break;
  91. case 4:
  92. image.src += "images/icons/Cloud-Lightning.svg"
  93. break;
  94. case 5:
  95. image.src += "images/icons/Cloud-Snow-Alt.svg"
  96. break;
  97. case 6:
  98. image.src += "images/icons/Cloud-Rain-Alt.svg"
  99. break;
  100. case 7:
  101. image.src += "images/icons/Cloud-Snow-Alt.svg"
  102. break;
  103. case 8:
  104. image.src += "images/icons/Cloud-Drizzle-Alt.svg"
  105. break;
  106. case 9:
  107. image.src += "images/icons/Cloud-Drizzle-Alt.svg"
  108. break;
  109. case 10:
  110. image.src += "images/icons/Cloud-Drizzle-Alt.svg"
  111. break;
  112. case 11:
  113. image.src += "images/icons/Cloud-Drizzle-Alt.svg"
  114. break;
  115. case 12:
  116. image.src += "images/icons/Cloud-Drizzle-Alt.svg"
  117. break;
  118. case 13:
  119. image.src += "images/icons/Cloud-Snow-Alt.svg"
  120. break;
  121. case 14:
  122. image.src += "images/icons/Cloud-Snow-Alt.svg"
  123. break;
  124. case 15:
  125. image.src += "images/icons/Cloud-Snow-Alt.svg"
  126. break;
  127. case 16:
  128. image.src += "images/icons/Cloud-Snow-Alt.svg"
  129. break;
  130. case 17:
  131. image.src += "images/icons/Cloud-Hail-Alt.svg"
  132. break;
  133. case 18:
  134. image.src += "images/icons/Cloud-Hail-Alt.svg"
  135. break;
  136. case 19:
  137. image.src += "images/icons/Cloud-Hail-Alt.svg"
  138. break;
  139. case 20:
  140. image.src += "images/icons/Cloud-Fog.svg"
  141. break;
  142. case 21:
  143. image.src += "images/icons/Cloud-Fog.svg"
  144. break;
  145. case 22:
  146. image.src += "images/icons/Cloud-Fog.svg"
  147. break;
  148. case 23:
  149. image.src += "images/icons/Cloud-Fog.svg"
  150. break;
  151. case 24:
  152. image.src += "images/icons/Wind.svg"
  153. break;
  154. case 25:
  155. image.src += "images/icons/Thermometer-Zero"
  156. break;
  157. case 26:
  158. image.src += "images/icons/Cloud.svg"
  159. break;
  160. case 27:
  161. image.src += "images/icons/Cloud-Moon.svg"
  162. break;
  163. case 28:
  164. image.src += "images/icons/Cloud.svg"
  165. break;
  166. case 29:
  167. image.src += "images/icons/Cloud-Moon.svg"
  168. break;
  169. case 30:
  170. image.src += "images/icons/Cloud-Sun.svg"
  171. break;
  172. case 31:
  173. image.src += "images/icons/Moon.svg"
  174. break;
  175. case 32:
  176. image.src += "images/icons/Sun.svg"
  177. break;
  178. case 33:
  179. image.src += "images/icons/Moon.svg"
  180. break;
  181. case 34:
  182. image.src += "images/icons/Sun.svg"
  183. break;
  184. case 35:
  185. image.src += "images/icons/Cloud-Hail-Alt.svg"
  186. break;
  187. case 36:
  188. image.src += "images/icons/Sun.svg"
  189. break;
  190. case 37:
  191. image.src += "images/icons/Cloud-Lightning.svg"
  192. break;
  193. case 38:
  194. image.src += "images/icons/Cloud-Lightning.svg"
  195. break;
  196. case 39:
  197. image.src += "images/icons/Cloud-Lightning.svg"
  198. break;
  199. case 40:
  200. image.src += "images/icons/Cloud-Rain.svg"
  201. break;
  202. case 41:
  203. image.src += "images/icons/Cloud-Snow-Alt.svg"
  204. break;
  205. case 42:
  206. image.src += "images/icons/Cloud-Snow-Alt.svg"
  207. break;
  208. case 43:
  209. image.src += "images/icons/Cloud-Snow-Alt.svg"
  210. break;
  211. case 44:
  212. image.src += "images/icons/Cloud.svg"
  213. break;
  214. case 45:
  215. image.src += "images/icons/Cloud-Lightning.svg"
  216. break;
  217. case 46:
  218. image.src += "images/icons/Cloud-Snow-Alt.svg"
  219. break;
  220. case 47:
  221. image.src += "images/icons/Cloud-Lightning.svg"
  222. break;
  223. case 3200:
  224. image.src += "images/icons/Moon-New.svg"
  225. break;
  226. case 999:
  227. image.src += "images/icons/Compass.svg"
  228. break;
  229. default:
  230. image.src += "images/icons/Moon-New.svg"
  231. break;
  232. }
  233. }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86182.html

相关文章

  • 纯 HTML+CSS+JavaScript 编写的计算器应用

    摘要:不允许再有其他文件,不允许再有单独的文件。必须支持标准的四则运算。请在收到邮件的小时内独立完成本测试,并回复本邮件。项目地址最终版的计算器,项目地址和预览图片在。并且使用单位来进行自动计算尺寸。 一道笔试题 之前偶然看到一个公司的笔试题,题目如下: 用HTML5、CSS3、JavaScript,做一个网页,实现如下图形式计算器 showImg(https://segmentfault....

    PiscesYE 评论0 收藏0
  • 纯 HTML+CSS+JavaScript 编写的计算器应用

    摘要:不允许再有其他文件,不允许再有单独的文件。必须支持标准的四则运算。请在收到邮件的小时内独立完成本测试,并回复本邮件。项目地址最终版的计算器,项目地址和预览图片在。并且使用单位来进行自动计算尺寸。 一道笔试题 之前偶然看到一个公司的笔试题,题目如下: 用HTML5、CSS3、JavaScript,做一个网页,实现如下图形式计算器 showImg(https://segmentfault....

    youkede 评论0 收藏0
  • 纯 HTML+CSS+JavaScript 编写的计算器应用

    摘要:不允许再有其他文件,不允许再有单独的文件。必须支持标准的四则运算。请在收到邮件的小时内独立完成本测试,并回复本邮件。项目地址最终版的计算器,项目地址和预览图片在。并且使用单位来进行自动计算尺寸。 一道笔试题 之前偶然看到一个公司的笔试题,题目如下: 用HTML5、CSS3、JavaScript,做一个网页,实现如下图形式计算器 showImg(https://segmentfault....

    fancyLuo 评论0 收藏0

发表评论

0条评论

hankkin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<