NANIGE BLOG
2023.10.25
2023.11.15

jQueryでカレンダーを作る ~パート2~

前回に引き続きjQueryでカレンダーを作成していきます。

今回はcssで装飾して見た目を整えていきます。

前回の記事はこちらです。まだ見ていない人はこちらから見るのをお勧めします。

あわせて読みたい

jQueryでカレンダーを作る ~パート1~

完成形

今回の記事で出来上がるカレンダーは以下の通りです。

画像ファイル1

前回とあまり変わっていません。

が、少しjQuery側でも操作が必要なので紹介していきます。

前回のコード

前回のコードはこちらです。

$(document).ready(function () {
    
    //作成したいカレンダーの年月を入れる
    const year = 2000
    const month = 2


    $(".calendar").html(CreateCalendar(year,month))
});
function CreateCalendar(year,month){
    const weeks = ['日', '月', '火', '水', '木', '金', '土']
    //取得する月の1日の情報
    const startDateOfMonth = new Date(year, month - 1, 1)
    //取得する月の最終日の情報
    const lastDateOfMonth = new Date(year, month, 0)
    //1日の曜日
    const startDay = startDateOfMonth.getDay()
    //取得する月のカレンダーの行数
    const Calendarline = CalendarLine(startDay,lastDateOfMonth.getDate())
    var CalendarElement = "<table>"
    //カレンダーの曜日の行を作成
    CalendarElement += "<tr>"
    for (let w = 0; w < 7; w++) {
        CalendarElement += "<td>" + weeks[w] + "</td>"
    }
    CalendarElement += "</tr>"
    var currentDate = 1;
    for (let line = 0; line < Calendarline;line++){
        CalendarElement += "<tr>"
        for (let w = 0; w < 7; w++){
            //カレンダーの一行目の場合は1日の曜日より前の枠は空欄にする
            //最終日を超えた場合の枠も空欄にする
            if ((line == 0 && w < startDay)){
                CalendarElement += "<td></td>"
                
            }
            else if (currentDate > lastDateOfMonth.getDate()){
                CalendarElement += "<td></td>"
                currentDate++
            }
            else{
                CalendarElement += "<td>"+currentDate+"</td>"
                currentDate++
            }
            
        }
        CalendarElement += "</tr>"
    }
    return CalendarElement
}
// //1日の曜日とその月の日数を引数にしてその月の行を返す関数
function CalendarLine(startDay,lastDateOfMonth){
    //(例)1日が(金)で最終日が31日の場合6行になる。→31日(日)
    if (startDay + lastDateOfMonth >= 36){
        return 6;
    }
    //うるう年でない2月の1日が日曜日の場合
    else if (startDay + lastDateOfMonth <= 28){
        return 4
    }
    //それ以外はすべて5行
    else {
        return 5
    }
}

ここからcssを適用させる準備をしていきます。

変更するところ

変更するところは最後にカレンダーの要素を追加していくところです。

下のコードの5行目23行目に注目してください。

    var CalendarElement = "<table>"
    //カレンダーの曜日の行を作成
    CalendarElement += "<tr>"
    for (let w = 0; w < 7; w++) {
        CalendarElement += "<td class = w"+ w +">" + weeks[w] + "</td>"
    }
    CalendarElement += "</tr>"
    var currentDate = 1;
    for (let line = 0; line < Calendarline;line++){
        CalendarElement += "<tr>"
        for (let w = 0; w < 7; w++){
            //カレンダーの一行目の場合は1日の曜日より前の枠は空欄にする
            //最終日を超えた場合の枠も空欄にする
            if ((line == 0 && w < startDay)){
                CalendarElement += "<td></td>"
                
            }
            else if (currentDate > lastDateOfMonth.getDate()){
                CalendarElement += "<td></td>"
                currentDate++
            }
            else{
                CalendarElement += "<td class = w"+ w +">" + currentDate+"</td>"
                currentDate++
            }
            
        }
        CalendarElement += "</tr>"
    }

tdタグで要素を作っていますがその際にclassを追加しています。

今回は日曜日からw0w1w2...w6というclass名でtdタグに追加しています。

これによって曜日ごとにclassが適用されるので装飾がしやすくなります。

cssファイルを準備する

最後にcssファイルで装飾しましょう。日曜日(w0)と土曜日(w6)にそれぞれcolorを適用させます。

色は好みでいいと思います。

また、せっかくなのでカレンダーの文字を右揃えにもしましょう。

以下がcssのコードになります。

.calendar{
    text-align: right;
}
.w0{
    color: red;
}
.w6{
    color: rgb(55, 125, 231);
}

これで完成です。

画像ファイル1

次回は祝日を適用させてカレンダーを完璧にしましょう。

あわせて読みたい

jQueryでカレンダーを作る ~パート3~

今日はここまで

ABOUT ME
たけし
元教育業界で講師を務め

未経験で転職を成功。

現在はWEBを中心に

SEとして活躍中

djangoやlaravelを主に扱う

保有資格:

・ AWS SAA(ソリューションアーキテクトアソシエイト)

・統計検定2級

・日商簿記2級
【解決方法】User Profile Serviceサービスによるサインインの処理に失敗しました。ユーザープロファイルを読み込めません
わかりやすく解説!ALBでEC2にアクセスする方法
意外に難しい…?クアラルンプール国際空港から市内への移動
ABOUT ME
たけし
元教育業界で講師を務め

未経験で転職を成功。

現在はWEBを中心に

SEとして活躍中

djangoやlaravelを主に扱う

保有資格:

・ AWS SAA(ソリューションアーキテクトアソシエイト)

・統計検定2級

・日商簿記2級