JavaScript カスタム カレンダー効果

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

実装のアイデア:各月の最初の日に曜日を取得し、前の日を空白として入力し、各月の日数を取得し、ループに入力し、現在の時間を判断して別のスタイルを追加し、前の月と次の月をクリックしたときに月を変更します。

現在の月の最初の日を取得します。戻り値は 0 (日曜日) から 6 (土曜日) までの整数です。

var date = 新しい Date();
var y = date.getFullYear();
var m = date.getMonth();
新しい Date(y,m,1).getDay();

現在の月の日数を取得します

var date = 新しい Date();
var y = date.getFullYear();
var m = date.getMonth();
新しい日付(y,m+1,-1)。getDate()+1;

最後に、前の月または次の月をクリックして 1 を加算または減算し、カプセル化されたカレンダー機能を実行します。

完全なコード:

<!DOCTYPE html>
<html lang="ja">

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
        }

        体 {
            背景: #2c3e50;
        }

        .カレンダー{
            幅: 400ピクセル;
            マージン: 50px 自動;
        }

        .カレンダーヒント{
            フォントサイズ: 16px;
            テキスト配置: 中央;
            色: #fff;
        }

        .前へ {
            フロート: 左;
            カーソル: ポインタ;
        }

        。次 {
            フロート: 右;
            カーソル: ポインタ;
        }

        .calendar-month {
            テキスト配置: 中央;
            マージン: 10px 0;
            色: #fff;
        }

        ul {
            リストスタイル: なし;
            ディスプレイ: フレックス;
        }

        li {
            幅: 57px;
            テキスト配置: 中央;
            高さ: 55px;
            行の高さ: 55px;
            フォントサイズ: 16px;
            色: #fff;
        }

        .カレンダー日{
            ディスプレイ: フレックス;
        }

        .calendar-day の範囲 {
            フレックス: 1;
            色: #fff;
            テキスト配置: 中央;
            高さ: 40px;
            行の高さ: 40px;

        }

        .カレンダーデータ{
            ディスプレイ: フレックス;
            flex-wrap: ラップ;
        }

        li {
            幅: 57px;
            カーソル: ポインタ;
        }

        li:ホバー{
            背景: #2d3436;
        }

        .カレンダーデータ.on {
            色: #d63031;
        }
    </スタイル>
</head>

<本文>
    <div class="カレンダー">
        <div class="カレンダーヒント">
            <span class="prev">前月</span>
            2022年
            <span class="next">来月</span>
        </div>
        <div class="calendar-month">5月</div>
        <div class="カレンダー日">
            <span>日</span>
            <span>一</span>
            <span>2</span>
            <span>3</span>
            <span>4</span>
            <span>5</span>
            <span>6</span>
        </div>
        <ul class="カレンダーデータ">
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
        </ul>
    </div>
    <スクリプト>
        var date = 新しい Date();
        var year = document.querySelector("#year");
        var 月 = document.querySelector(".calendar-month");
        var カレンダーデータ = document.querySelector(".カレンダーデータ");
        var prev = document.querySelector(".prev");
        var next = document.querySelector(".next");
        var monthArr = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
        var y,m,day,d,html,今日;
        カレンダー();

        関数カレンダー() {
            y = date.getFullYear();
            year.innerHTML = y + "年";

            m = date.getMonth();
            month.innerHTML = monthArr[m];
            day = new Date(y, m, 1).getDay(); //各月の最初の日を取得します d = new Date(y, m + 1, -1).getDate() + 1; //日数を取得します html = "";

            //各月の初日より前の時間を空に入力します for (var i = 0; i < day; i++) {
                html += "<li> </li>";
            }

            (var j = 1; j <= d; j++) の場合 {
                if (y==新しい日付().getFullYear() && m==新しい日付().getMonth() && j==日付.getDate()) {
                    html += "<li class='on'>" + j + "</li>";
                } それ以外 {
                    html += "<li>" + j + "</li>";
                }

            }
            カレンダーデータ.innerHTML = html;
        }

        prev.onclick = 関数(){
            date.setMonth(date.getMonth() - 1);
            カレンダー();
        }

        next.onclick = 関数(){
            date.setMonth(date.getMonth() + 1);
            カレンダー();
        }
    </スクリプト>
</本文>

</html>

効果:

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

以下もご興味があるかもしれません:
  • シンプルなカレンダーを実現するためのjs css+html
  • 軽量ネイティブ js カレンダー プラグイン、calendar.js の使用ガイド
  • シンプルなカレンダーコントロールを学ぶJS
  • Vue.js でカレンダー効果を作成する
  • JSカレンダーのおすすめ
  • Pure js シンプルなカレンダー実装コード
  • js カレンダー コントロール (分単位の精度)
  • PHP+JavaScript カレンダーコントロール
  • js+html でシンプルなカレンダーを作成する方法
  • JSはシンプルなカレンダーを実装します

<<:  Zenコーディングリソース更新機能強化

>>:  Google 翻訳ツール: 多言語ウェブサイトを素早く実装

推薦する

Baidu Maps を Web ページに埋め込み、Baidu Maps API を使用してマップをカスタマイズする詳細な手順

ウェブページにBaiduマップを挿入するBaidu Maps を自分の Web ページに追加したい場...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

JavaScript の Strict モードの詳細な説明

目次導入厳密モードの使用厳格モードの新機能例外を強制的にスローする変数の使用を簡素化する議論を単純化...

js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...

MySQL ストレステストツールの使い方

1. MySQL 独自のストレステストツール - Mysqlslap mysqlslap は、mys...

Docker Compose ネットワーク設定の説明

基本概念デフォルトでは、Compose はアプリケーション用のネットワークを作成し、サービスの各コン...

ffmpeg 中国語パラメータの詳細な説明

FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...

テキスト ファイルの並べ替えに役立つ Awk コマンドラインまたはスクリプト (推奨)

Awk は、ソートを含む他の一般的なユーティリティによって実行できるいくつかのタスクを実行できる強...

TypeScript 2.0 マーク付き共用体型の詳細な説明

目次タグ付きユニオン型を使用した支払い方法の構築タグ付きユニオン型を使用した Redux アクション...

MySQL データベース クエリ パフォーマンス最適化戦略

クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...

Vue の動的メニュー、動的ルートの読み込みと更新の落とし穴

目次必要:アイデア:レッスン:テキストを共有する:要約する必要:インターフェイスからサブメニュー デ...

MySQL データ型の完全分析

データ型: 列に格納できるデータとそのデータが実際にどのように格納されるかを定義する基本ルール。デー...

Linux 向けの強化されたスクリーンショットと共有ツール: ScreenCloud

ScreenCloud は、必要だとは思わなかった素晴らしい小さなアプリです。デスクトップ Lin...

Reactコンポーネントのライフサイクルの詳細な説明

目次1.ライフサイクルとは何か2. 読み込みプロセス1.コンストラクタ2. レンダリング3. コンポ...

MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策

lepus3.7 を使用して MySQL データベースを監視中に、次の問題が発生しました。このブログ...