jQueryで簡単に作成できるカレンダーデモアプリ|メモ機能付き


最近、Webアプリケーションでカレンダーを使いたいシーンが増えてきました。例えば、スケジュール管理やイベントの追加、日付の確認など、ユーザーインターフェースにカレンダーを組み込む場面は多岐にわたります。今回は、jQueryを使って簡単にカレンダーアプリを作成し、メモ機能も実装する方法をご紹介します。このチュートリアルでは、カレンダーが月ごとに切り替わり、日付をクリックしてメモを残せるようにします。

See the Pen Untitled by masakazuimai (@masakazuimai) on CodePen.


jQueryでカレンダーアプリを作成するメリット

1. シンプルで直感的な操作

jQueryを使えば、DOM操作が簡単に行えるため、カレンダーの月切り替えや日付クリックイベントの処理が非常にシンプルになります。JavaScriptを手動で書くよりも、コード量が少なく済み、読みやすくなります。

2. クロスブラウザ対応

jQueryは長年の利用実績があり、クロスブラウザ対応がしっかりしています。新しいブラウザや古いブラウザでも、予期せぬ動作をすることなく、安定した動作を実現できます。

3. カスタマイズしやすい

jQueryを使って作成したカレンダーは、デザインや機能を簡単にカスタマイズできます。例えば、背景色やフォントを変更したり、イベントの追加や削除機能を実装することも容易です。

実装するカレンダーの機能

このチュートリアルでは、以下の基本的な機能を持ったカレンダーを作成します。

  • 月の切り替え:前月・次月ボタンを使って、カレンダーの月を切り替えられる機能。
  • 日付クリックでメモを保存:日付をクリックすると、その日にメモが残せるポップアップが表示され、メモをlocalStorageに保存する機能。
  • メモの削除:保存したメモを削除できる機能。

jQueryカレンダーアプリの作成手順

1. HTMLとCSSで基本レイアウト

まず、カレンダーを表示するための基本的なHTML構造を作成します。月名や日付を表示するためのdiv要素を配置し、カレンダーのヘッダー部分に「前月」と「次月」のボタンを配置します。

<div id="calendar">
  <div id="calendar-header">
    <button id="prev-month">前月</button>
    <h2 id="month-name"></h2>
    <button id="next-month">次月</button>
  </div>
  <div id="calendar-body">
    <div class="weekdays">
      <div class="sunday">日</div>
      <div>月</div>
      <div>火</div>
      <div>水</div>
      <div>木</div>
      <div>金</div>
      <div class="saturday">土</div>
    </div>
    <div id="days"></div>
  </div>
</div>

次に、カレンダーのスタイルを指定します。背景色やボタンのスタイル、日付セルのデザインを指定して、カレンダーが見やすくなるようにします。

#calendar {
  width: 350px;
  background-color: #e0e5ec;
  border-radius: 20px;
  box-shadow: 8px 8px 15px #a3b1c6, -8px -8px 15px #ffffff;
  padding: 20px;
}

#calendar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}

button {
  padding: 10px;
  background-color: #e0e5ec;
  border: none;
  border-radius: 10px;
  box-shadow: 4px 4px 10px #a3b1c6, -4px -4px 10px #ffffff;
  cursor: pointer;
  transition: all 0.3s ease;
}

button:hover {
  box-shadow: 2px 2px 5px #a3b1c6, -2px -2px 5px #ffffff;
}

2. jQueryで動的なカレンダー機能を追加

次に、jQueryを使用して、月切り替え機能や日付クリックイベントを実装します。

$(document).ready(function() {
  let currentYear = new Date().getFullYear();
  let currentMonth = new Date().getMonth();

  // 月名を表示する関数
  function displayMonth() {
    const monthNames = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
    $("#month-name").text(`${currentYear}年 ${monthNames[currentMonth]}`);
  }

  // カレンダーを描画する関数
  function renderCalendar() {
    const days = [];
    const firstDayOfMonth = new Date(currentYear, currentMonth, 1);
    const firstDayWeekday = firstDayOfMonth.getDay();
    const daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate();

    // 空白の日付を追加
    for (let i = 0; i < firstDayWeekday; i++) {
      days.push('');
    }

    // 日付を追加
    for (let i = 1; i <= daysInMonth; i++) {
      days.push(i);
    }

    // カレンダーに日付を表示
    $("#days").empty();
    days.forEach((day, index) => {
      const $dayDiv = $("<div>").text(day).addClass('day');
      if (day !== '' && localStorage.getItem(`memo-${day}`)) {
        $dayDiv.addClass('has-memo');
      }
      $dayDiv.on('click', function() {
        openMemoPopup(day);
      });
      $("#days").append($dayDiv);
    });
  }

  // メモポップアップを開く
  function openMemoPopup(day) {
    selectedDate = day;
    const storedMemo = localStorage.getItem(`memo-${selectedDate}`);
    $("#memo-text").val(storedMemo ? storedMemo : '');
    $("#note-popup").show();
  }

  // 前月ボタン
  $("#prev-month").on('click', function() {
    currentMonth--;
    if (currentMonth < 0) {
      currentMonth = 11;
      currentYear--;
    }
    displayMonth();
    renderCalendar();
  });

  // 次月ボタン
  $("#next-month").on('click', function() {
    currentMonth++;
    if (currentMonth > 11) {
      currentMonth = 0;
      currentYear++;
    }
    displayMonth();
    renderCalendar();
  });

  // 初期表示
  displayMonth();
  renderCalendar();
});

3. メモ機能の実装

ユーザーが日付をクリックすると、ポップアップが表示され、その日にメモを追加できます。localStorageに保存されたメモを読み込み、更新できるようにします。

// メモ保存
$("#save-memo").on('click', function() {
  const memoKey = `memo-${selectedDate}`;
  localStorage.setItem(memoKey, $("#memo-text").val());
  alert("メモが保存されました");
  $("#note-popup").hide();
  renderCalendar();
});

// メモ削除
$("#delete-memo").on('click', function() {
  const memoKey = `memo-${selectedDate}`;
  localStorage.removeItem(memoKey);
  alert("メモが削除されました");
  $("#note-popup").hide();
  renderCalendar();
});

まとめ

jQueryを使って、月ごとに切り替え可能なカレンダーアプリを作成しました。メモ機能を追加することで、ユーザーが特定の日にメモを残せるようになり、localStorageを使ってデータを保存することができます。前月・次月の切り替えや、日付をクリックしてメモを追加する操作も簡単に実装できました。

あなたもこのアプリを使って、スケジュール管理や日々のメモを簡単に管理できるようになるでしょう。

✪ 画像素材がないものはランダムで表示されるようになっています。フリー素材などでご用意ください。

おすすめChromeプラグイン一覧

プラグイン名特徴
GoFullPageウェブページ全体のスクリーンショットを簡単に取得できるブラウザ拡張機能です。
ColorZilla色を抽出するための拡張機能です。
WhatFontウェブページ上のフォントの情報を簡単に確認できるブラウザ拡張機能です。
PerfectPixelデザイナーが作成したデザインと実際にコーディングされたウェブページがどの程度一致しているかを確認・調整するためのブラウザ拡張機能です。

模写の手順

ステップ内容
ステップ 1構図を手書きか全画面スクショ(Go full page等)した後、ペイントツールで四角で囲い、大まかなclass,命名規則をあらかじめ決める。
ステップ 2HTMLの基本構造を作成する
ステップ 3CSSでレイアウトを模写する
ステップ 4 中級〜JavaScriptを追加して動きを再現する
ステップ 5最終調整を行い、検証ツールやPerfectPixel(chromeプラグイン)などで完成を確認する。