Vue 天気予報入門

Vue 天気予報入門

この記事では、参考までに天気予報を実装するためのVueの具体的なコードを紹介します。具体的な内容は次のとおりです。

レンダリング

実装コード

<!DOCTYPE html>
<html lang="ja">
  <ヘッド>
    <メタ文字セット="UTF-8" />
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0" />
    <meta http-equiv="X-UA-compatible" content="ie=edge" />
    <title>神は知っている</title>
    <link rel="スタイルシート" href="css/reset.css" />
    <link rel="スタイルシート" href="css/index.css" />
    <スタイル>
      [v-マント] {
        表示: なし;
      }
    </スタイル>
  </head>

  <本文>
    <div class="wrap" id="app">
      <div class="検索フォーム">
        <div class="logo"><img src="img/logo.png" alt="ロゴ" /></div>
        <div class="form_group">
          <入力
            タイプ="テキスト"
            クラス="input_txt"
            placeholder="問い合わせたい天気を入力してください"
            v-model="都市"
            @keyup.enter="天気を検索"
          />
          <button class="input_sub" @click="searchWeather">検索</button>
        </div>
        <div class="hotkey">
          <a href="javascript:;" @click="searchWeatherByCity('北京')">北京</a>
          <a href="javascript:;" @click="searchWeatherByCity('Shanghai')">上海</a>
          <a href="javascript:;" @click="searchWeatherByCity('Guangzhou')">広州</a>
          <a href="javascript:;" @click="searchWeatherByCity('深圳')">深圳</a>
        </div>
      </div>
      <ul class="weather_list" v-cloak="block">
        <li v-for="天気リスト内の項目">
          <div class="info_type">
            <span class="iconfont">{{item.type}}</span>
          </div>
          <div class="info_temp">
            <b>{{item.low}}</b>
            〜
            <b>{{item.high}}</b>
          </div>
          <div class="info_date"><span>{{item.date}}</span></div>
        </li>
      </ul>
    </div>
    <!-- 開発バージョン、便利なコマンドライン警告を含む -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <!-- 公式ウェブサイトから提供された Axios オンライン アドレス -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <!-- 独自の js -->
    <script src="./js/main.js"></script>
  </本文>
</html>

インデックス.css

体{
    フォントファミリ:'Microsoft YaHei';   
}
。包む{
    位置: 固定;
    左:0;
    トップ:0;
    幅:100%;
    高さ:100%;
    /* 背景: 放射状グラデーション(#f3fbfe, #e4f5fd, #8fd5f4); */
    /* 背景:#8fd5f4; */
    /* 背景: 線形グラデーション(#6bc6ee, #fff); */
    背景:#fff;

}
.検索フォーム{
    幅:640ピクセル;
    マージン:100px 自動 0;
}
.logo画像{
    表示:ブロック;
    マージン:0 自動;
}
.form_group{
    幅:640ピクセル;
    高さ:40px;
    上マージン:45px;
}
.input_txt{
   幅:538ピクセル;
   高さ:38px;
   パディング:0px;
   フロート:左;
   境界線:1px実線 #41a1cb;
   アウトライン:なし;
   テキストインデント:10px;
}

.input_sub{
    幅:100ピクセル;
    高さ:40px;
    境界線:0px;
    フロート: 左;
    背景色: #41a1cb;
    色:#fff;
    フォントサイズ:16px;
    アウトライン:なし;
    カーソル: ポインタ;
    位置: 相対的;
}
.input_sub.loading::before{
    コンテンツ:'';
    位置: 絶対;
    左: 0;
    上: 0;
    幅: 100%;
    高さ: 100%;
    背景: url('../img/loading.gif');
}

.ホットキー{
    マージン:3px 0 0 2px;
}

.ホットキー a{
    フォントサイズ:14px;
    色:#666;
    パディング右:15px;
}
.天気リスト{
    高さ:200px;
    テキスト配置:中央;
    上マージン:50px;
    フォントサイズ:0px;
}
.weather_list li{
    表示:インラインブロック;
    幅:140ピクセル;
    高さ:200px;
    パディング:0 10px;
    オーバーフロー: 非表示;
    位置: 相対的;
    background:url('../img/line.png') 右 中央 繰り返しなし;
    背景サイズ: 1px 130px;
}

.weather_list li:last-child{
    背景:なし;
}


.info_date{
    幅:100%;
    高さ:40px;
    行の高さ:40px;
    色:#999;
    フォントサイズ:14px;
    左:0px;    
    下:0px;    
    上マージン: 15px;
}
.info_date b{
    フロート: 左;
    左マージン:15px;
}

.info_type スパン{
    色:#fda252;
    フォントサイズ:30px;
    行の高さ:80px;
}
.info_temp{
    フォントサイズ:14px;  
    色:#fda252;
}
.info_temp b{
    フォントサイズ:13px;
}
.temp .アイコンフォント {
    フォントサイズ: 50px;
  }

リセット.css

本文、ul、h1、h2、h3、h4、h5、h6{
    マージン: 0;
    パディング: 0;
}
h1、h2、h3、h4、h5、h6{
    フォントサイズ:100%;
    フォントの太さ:通常;
}
{
    テキスト装飾:なし;
}
ul{
    リストスタイル:なし;
}
画像{
    境界線:0px;
}

/* フローティングをクリアして、上部のマージンの崩壊を解決します*/
.clearfix:before、.clearfix:after{
    コンテンツ:'';
    表示:テーブル;    
}
.clearfix:後{
    クリア:両方;
}
.clearfix{
    ズーム:1;
}

.fl{
    フロート:左;
}
.fr{
    フロート:右;
}

メイン.js

/*
  リクエストアドレス: http://wthrcdn.etouch.cn/weather_mini
  リクエストメソッド: get
  リクエストパラメータ: city (都市名)
  応答内容: 天気情報 1. Enter キーをクリック 2. データを照会 3. データをレンダリング */
var アプリ = 新しい Vue({
    el: "#app",
    データ: {
        市: ''、
        天気リスト: []
    },
    メソッド: {
        検索天気() {
            if (this.city == '') {
                alert("都市名を入力してください!");
            } それ以外 {
                var that = this;
                axios.get('http://wthrcdn.etouch.cn/weather_mini?city=' + that.city).then(function (response) {
                    (レスポンスデータステータス == 1002)の場合{
                        alert("入力した都市名が間違っています。再入力してください!");
                        that.city = '';
                    } それ以外 {
                        that.weatherList = response.data.data.forecast;
                        console.log(応答データ);
                    }
                }).catch(関数(エラー) {
                    コンソール.log(エラー);
                })
            }
        },
        searchWeatherByCity(都市) {
            都市は、
            this.searchWeather();
        }
    },
})

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueを使用して天気コンポーネントをロードする方法の詳細な説明
  • Vueは小さな天気予報アプリケーションを実装します
  • Vue が天気予報機能を実装
  • Vue で webSocket を使用してリアルタイムの天気を更新する方法

<<:  効率を向上できる Linux コマンドエイリアス 10 個のまとめ

>>:  Mysql のフィールドのデータの一部をバッチ置換する (推奨)

推薦する

APP (IOS、Android) を呼び出すモバイル H5 の記述例

iOS 1. URLスキームこのソリューションは基本的に、WeChat、QQ 組み込みブラウザ、QQ...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

いくつかの CSS3 タグの短縮形 (推奨)

border-radius: CSS3 丸い角構文: border-radius: 25px;楕円...

Docker 学習: コンテナ コンテナの具体的な使用方法

コンテナは Docker のもう一つの中心的な概念です。簡単に言えば、コンテナとは、独立して実行され...

MySQLサーバのスレッド数を表示する方法の詳細な説明

この記事では、例を使用して、MySQL サーバーのスレッド数を表示する方法について説明します。ご参考...

JavaScript の非同期処理で待機時間を節約できますか?

JavaScriptで非同期実行の結果を同期的に取得するには、 for ループ内でawaitを使用...

ActiveMQ メッセージ サービスを構築するための Docker 学習方法の手順

序文ActiveMQ は、Apache が開発した最も人気があり強力なオープン ソース メッセージ ...

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント。ウェブサイトのアクセス速度...

重複したMySQLテーブルをマージして削除する簡単な方法

シナリオ:クロールされたデータは、別のメインテーブルと同じ構造を持つデータテーブルを生成するため、マ...

Linux での JDK のインストール (OpenJDK のアンインストールを含む) の概要

1. openjdkを表示する rpm -qa|grep jdk 2. openjdk を削除します...

inline-blockプロパティとの互換性

<br />1年前、インターネット上にはinline-blockプロパティに関する記事は...

MySQL InnoDBストレージエンジンについて簡単に説明します

序文:ストレージ エンジンはデータベースの中核です。MySQL の場合、ストレージ エンジンはプラグ...

Linux で MySQL 5.7.19 をアンインストールする方法

1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...