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 翻訳ツール: 多言語ウェブサイトを素早く実装

推薦する

マウスオーバーボタンアニメーションを実現する純粋な CSS3 パート 2

前の 2 つの章を終えて、ボタンのフローティング アニメーションについて新たな理解が得られましたか?...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

CSS 線形グラデーション凹型長方形遷移効果の実装

この記事では、線形グラデーションの凹四角形の遷移効果の難しさやアイデアについて説明します。主に、凹四...

JavaScript は自由に移動するウィンドウのマウス制御を実装します

この記事では、フリーウィンドウのマウス制御を実現するためのJavaScriptの具体的なコードを参考...

Dockerのインストール、イメージの作成、NodeJSプログラムの読み込みと実行の詳細なプロセス

システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...

CSSはインラインブロックのずれの問題を解決します

もうナンセンスじゃない、郵便番号HTML部分 <div class="positio...

IEのクラッシュバグ

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

MySQL 文字列インデックスのより合理的な作成ルールに関する議論

序文MySQL インデックスの使用に関しては、これまでインデックスの最左接頭辞ルール、インデックス ...

MySQL の遅いクエリの例

導入スロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメントを記録で...

MySQL DISTINCTの基本実装原理の詳細な説明

序文DISTINCT は、GROUP BY 操作の実装と非常によく似ていますが、GROUP BY の...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [root...

Reactマウスの複数選択機能の設定方法

一般的に、リストには選択機能があり、単一選択、二重選択、複数選択が非常に一般的です。カスタム ループ...

Node.jsミドルウェアの仕組みの詳細な説明

目次Express ミドルウェアとは何ですか? Expressミドルウェアを作成するための要件Exp...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...