【问题标题】:simpleweather js weather iconssimpleweather js 天气图标
【发布时间】:2016-05-16 12:35:21
【问题描述】:

我正在尝试使用 simpleweather js 制作一个天气应用程序。我已经成功地让应用程序显示我当前位置的天气,但我不确定如何让天气图标显示在温度旁边。任何帮助将不胜感激。 这是我的密码笔:http://codepen.io/perrylivingston/pen/dMLLOP 这些是我正在尝试使用的图标:https://github.com/erikflowers/weather-icons

html:

    <div id="the_weather"></div>
    <button class="js-geolocation"> Use Location</button>
    <i class="wi wi-yahoo-31"></i>

css:

body {
background-image: url("http://www.psdgraphics.com/file/blue-sky.jpg");
background-size: cover;
height: 100%;
width: 100%;
}

#the_weather {
width: 500px;
text-align: center;
margin: 0px auto;
text-transform: uppercase;
}

@font-face {
src: url('weathericons-regular-webfont.eot') format ('embedded-opentype');
src: url('weathericons-regular-webfont.svg') format ('svg');
src: url('weathericons-regular-webfont.ttf') format('truetype');
src: url('weathericons-regular-webfont.woff') format('woff');
src: url('weathericons-regular-webfont.woff2') format('woff2');
}

i {
color: #ffffff;
font-size: 160px;
font-weight: normal;
font-style: normal;
}

#the_weather li {
display: block;
font-weight: bold;
padding: 5px;
}

.icon-0:before { content: ":"; }
.icon-1:before { content: "p"; }
.icon-2:before { content: "S"; }
.icon-3:before { content: "Q"; }
.icon-4:before { content: "S"; }
.icon-5:before { content: "W"; }
.icon-6:before { content: "W"; }
.icon-7:before { content: "W"; }
.icon-8:before { content: "W"; }
.icon-9:before { content: "I"; }
.icon-10:before { content: "W"; }
.icon-11:before { content: "I"; }
.icon-12:before { content: "I"; }
.icon-13:before { content: "I"; }
.icon-14:before { content: "I"; }
.icon-15:before { content: "W"; }
.icon-16:before { content: "I"; }
.icon-17:before { content: "W"; }
.icon-18:before { content: "U"; }
.icon-19:before { content: "Z"; }
.icon-20:before { content: "Z"; }
.icon-21:before { content: "Z"; }
.icon-22:before { content: "Z"; }
.icon-23:before { content: "Z"; }
.icon-24:before { content: "E"; }
.icon-25:before { content: "E"; }
.icon-26:before { content: "3"; }
.icon-27:before { content: "a"; }
.icon-28:before { content: "A"; }
.icon-29:before { content: "a"; }
.icon-30:before { content: "A"; }
.icon-31:before { content: "6"; }
.icon-32:before { content: "1"; }
.icon-33:before { content: "6"; }
.icon-34:before { content: "1"; }
.icon-35:before { content: "W"; }
.icon-36:before { content: "1"; }
.icon-37:before { content: "S"; }
.icon-38:before { content: "S"; }
.icon-39:before { content: "S"; }
.icon-40:before { content: "M"; }
.icon-41:before { content: "W"; }
.icon-42:before { content: "I"; }
.icon-43:before { content: "W"; }
.icon-44:before { content: "a"; }
.icon-45:before { content: "S"; }
.icon-46:before { content: "U"; }
.icon-47:before { content: "S"; }

#weather h2 {
margin: 0 0 8px;
color: #fff;
font-size: 100px;
font-weight: 300;
text-align: center;
text-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15);
}

#weather ul {
margin: 0;
padding: 0;
}

#weather li {
background: #fff;
background: rgba(255,255,255,0.90);
padding: 20px;
display: inline-block;
border-radius: 5px;

}

#weather .currently {
margin: 0 20px;
}

button {
display: block;
margin: 15px auto;
width: 140px;
padding: 5px;
background:#efcc3a;
color: #0;
font-weight: bold;
border: 0;
border-radius: 5px;
}

jquery if(导航器中的“地理位置”){ $('.js-geolocation').show(); } 别的 { $('.js-geolocation').hide(); }

$('.js-geolocation').on('click', function() {
navigator.geolocation.getCurrentPosition(function(position) {
loadWeather(position.coords.latitude+','+position.coords.longitude);
});
});


$(document).ready(function() {
loadWeather('New York','');
});

function loadWeather(location, woeid) {
$.simpleWeather({
location: location,
woeid: woeid,
unit: 'f',
success: function(weather) {
html = '<h2><i class="icon-'+weather.code+'"></i>          '+weather.temp+'&deg;'+weather.units.temp+'</h2>';
html += '<ul><li>'+weather.city+', '+weather.region+'</li>';
html += '<li class="currently">'+weather.currently+'</li>';
html += '<li>'+weather.alt.temp+'&deg;C</li></ul>';  

$("#the_weather").html(html);
},
error: function(error) {
$("#the_weather").html('<p>'+error+'</p>');
}
});
}

【问题讨论】:

  • 根据图标的兼容性页面 (erikflowers.github.io/weather-icons/api-list.html),wi-yahoo-31 的等价物是 night-clear,所以您可以使用 &lt;i class="wi wi-night-clear"&gt;&lt;/i&gt; 而不是 &lt;i class="wi wi-yahoo-31"&gt;&lt;/i&gt; - 所以不要添加 weather.code对于图标,您需要有一个查找表(将 yahoo 的图标与天气图标映射)并每次都使用替换。这有意义吗?
  • 我想是的。但就目前的代码而言,我只能在 CSS 中获得字母占位符。如何解决此问题以首先显示雅虎图标,然后再将其映射到新图标?我之前在 html 中完成了 ,但没有成功。我有什么遗漏吗?
  • 在代码笔中,你包括天气图标的css吗? (当我修改你的笔时,我可以看到夜间清除图标(左下方,不居中)
  • 没关系创建您自己的映射,图书馆已经为您映射了它们。请参阅答案中的运行示例

标签: javascript jquery


【解决方案1】:

您的代码似乎工作正常。
确保按以下顺序插入库

  1. jQuery
  2. 简单天气

别忘了包含你的天气图标 CSS 和 Bootstrap CSS 文件

$(document).ready(function() {
  if ("geolocation" in navigator) {
    $('.js-geolocation').show();
  } else {
    $('.js-geolocation').hide();
  }

  // button handler
  $('.js-geolocation').on('click', function() {
    navigator.geolocation.getCurrentPosition(function(position) {
      loadWeather(position.coords.latitude + ',' + position.coords.longitude);
    });
  });
  

  // loads weather
  function loadWeather(location, woeid) {
    $.simpleWeather({
      location: location,
      woeid: woeid,
      unit: 'f',
      success: function(weather) {
        
        html = '<h2><i class="wi wi-yahoo-' + weather.code + '"></i> ' + weather.temp + '&deg;' + weather.units.temp + '</h2>';
        html += '<ul><li>' + weather.city + ', ' + weather.region + '</li>';
        html += '<li class="currently">' + weather.currently + '</li>';
        html += '<li>' + weather.alt.temp + '&deg;C</li></ul>';

        $("#the_weather").html(html);
      },
      error: function(error) {
        $("#the_weather").html('<p>' + error + '</p>');
      }
    });
  }


  // init
  loadWeather('Miami', '');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.simpleWeather/3.1.0/jquery.simpleWeather.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/weather-icons/2.0.10/css/weather-icons.css" rel="stylesheet" />

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

<div id="the_weather"></div>
<button class="js-geolocation">Use Location</button>

<i class="wi wi-night-clear"></i>

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 2011-06-25
    • 2020-09-09
    • 2021-03-23
    • 1970-01-01
    • 2019-03-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多