jsを使ってシンプルなディスククロックを実現する

jsを使ってシンプルなディスククロックを実現する

この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します。具体的な内容は次のとおりです。

プレビュー画像:

コード:

CS: ...

<スタイル>
        .ディスク{
            位置: 相対的;
            マージン: 200px 自動;
            幅: 300ピクセル;
            高さ: 300px;
            境界線: 1px実線 #000;
            境界線の半径: 50%;
        }
        
        .軸{
            位置: 絶対;
            上: 150px;
            左: 150px;
            変換: translate(-50%, -50%);
            幅: 10px;
            高さ: 10px;
            境界線の半径: 50%;
            背景色: #000;
        }
        
        .hourHand {
            位置: 絶対;
            上: 150px;
            左: 147px;
            幅: 6px;
            高さ: 80px;
            背景色: #000;
            変換の原点: 3px 0;
        }
        
        .分ハンド{
            位置: 絶対;
            上: 150px;
            左: 148ピクセル;
            幅: 4px;
            高さ: 110px;
            背景色: #000;
            変換の原点: 2px 0;
        }
        
        。中古 {
            位置: 絶対;
            上: 150px;
            左: 149px;
            幅: 2px;
            高さ: 130px;
            背景色: #000;
            変換の原点: 1px 0;
        }
        
        .スケール{
            位置: 絶対;
            上: 0;
            左: 150px;
            変換の原点: 2.5px 150px;
            幅: 2px;
            高さ: 5px;
            背景色: #000;
        }
        
        .nu​​m {
            位置: 絶対;
            上: 15px;
            左: 150px;
            幅: 20px;
            高さ: 20px;
            色: 16px;
            テキスト配置: 中央;
            行の高さ: 20px;
            変換の原点: 50% 135px;
        }
        
        .nu​​m スパン {
            表示: ブロック;
            変換の原点: 50% 50%;
        }
</スタイル>

html:

<div class="disc">
        <div class="axis"></div>
        <div class="hourHand"></div>
        <div class="minuteHand"></div>
        <div class="secondHand"></div>

</div>

js:

// 要素を取得します var disc = document.getElementsByClassName('disc')[0];
        var hourHand = document.getElementsByClassName('hourHand')[0];
        var minuteHand = document.getElementsByClassName('minuteHand')[0];
        var secondHand = document.getElementsByClassName('secondHand')[0];
        var scale = document.getElementsByClassName('scale');

        // スケールを生成する for (var i = 0; i < 60; i++) {
            var scale = document.createElement('div');
            scale.classList に 'scale' を追加します。
            scale.style.transform = `translate(-50%) 回転(${i*6}deg)`;
            disc.appendChild(スケール);
            scale.style.transform = `translate(-50%) 回転(${i*6}deg)`;
            (i % 5 === 0)の場合{
                scale.style.width = 4 + 'px';
                scale.style.height = 12 + 'px';
            }
        }

        // 数値を生成する for (var i = 0; i < 12; i++) {
            var num = document.createElement('div');
            var numx = document.createElement('span');
            num.classList.add('num');
            num.style.transform = `translate(-50%)rotate(${i*30+30}deg)`;
            numx.style.transform = `rotate(${-i*30-30}deg)`;
            numx.innerHTML = i + 1;
            disc.appendChild(数値);
            num.appendChild(numx);
        }


        // ブラウザが開かれるとすぐに一時停止せずに表示します var h = getTime().hours;
        h = h > 12 ? h - 12 : h;
        hourHand.style.transform = `rotate(${h*30-180+(getTime().minute*0.5)}deg)`;
        minuteHand.style.transform = `rotate(${getTime().minute*6-180}deg)`;
        secondHand.style.transform = `rotate(${getTime().second*6-180}deg)`;

        // タイマー、1秒ごとに実行 setInterval(function() {
            var h = getTime().hours;
            h = h > 12 ? h - 12 : h;
            hourHand.style.transform = `rotate(${h*30-180+(getTime().minute*0.5)}deg)`;
            minuteHand.style.transform = `rotate(${getTime().minute*6-180}deg)`;
            secondHand.style.transform = `rotate(${getTime().second*6-180}deg)`;
        }, 1000)


        // 関数: 時間を取得する function getTime() {
            var date = 新しい Date();
            var 年 = date.getFullYear();
            var 月 = date.getMonth();
            月 = 月 < 10 ? '0' + 月 : 月;
            日付を取得する
            日 = 日 < 10 ? '0' + 日 : 日;
            var week = date.getDay();
            var weeks = ['日', '月', '火', '水', '木', '金', '土'];
            var weekZn = weeks[週];
            var hou = date.getHours();
            hou = hou < 10 ? '0' + hou : hou;
            var min = date.getMinutes();
            min = min < 10 ? '0' + min : min;
            var sec = date.getSeconds();
            秒 = 秒 < 10 ? '0' + 秒 : 秒;
            戻る {
                年: 年、
                月: 月、
                日: 日、
                週: weekZn、
                時間: hou、
                分: 分、
                秒: 秒
            }
        }

JavaScript クロックエフェクトの詳細については、こちらをクリックしてください: JavaScript クロックエフェクトの特別トピック

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

以下もご興味があるかもしれません:
  • JS は高頻度の連続クリックを禁止するメソッドを実装します [ES6 構文に基づく]
  • JavaScript でイベント関数の高頻度トリガーと高頻度呼び出しを防ぐ方法
  • JavaScript ループトラバーサルの 24 種類のメソッドをすべてご存知ですか?
  • JavaScript配列重複排除の詳細な説明
  • jsを使用してシンプルなカルーセル効果を実現する
  • 航空機戦争ゲームを実装するためのJavaScript
  • 初心者でもjsのtypeofとinstanceofの違いを理解できます
  • フロントエンドの面接でよく聞かれる JavaScript の質問の完全なリスト

<<:  Linux でのファイル コンテンツの重複排除と交差と差異の実装

>>:  MySQL DMLステートメントの使用に関する詳細な説明

推薦する

ubuntu16.04 で nginx を完全にアンインストールするための関連コマンド

nginx の概要nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プ...

MySql ストレージ エンジンとインデックスに関する知識のまとめ

ストレージエンジンデータベース ストレージ エンジンとは何ですか?データベース エンジンは、データベ...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

実用的なクイックスタートReactルーティング開発

インストールインストールするには、次のコマンドを入力します。 // ネプ npm で react-r...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

LinkedIn がウェブサイト閲覧を簡素化するためにリニューアル

ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...

Linux環境でのshadowsocks+polipoグローバルプロキシの設定

1. シャドウソックスをインストールするsudo apt-get install python-pi...

mini-vueレンダリングのシンプルな実装

目次序文ターゲット最初のステップ:ステップ2:ステップ3:ステップ4:要約する序文現在主流のフレーム...

Node.js でメモリ効率の高いアプリケーションを作成する方法

目次序文問題: 大きなファイルのコピーNodeJS のストリームとバッファバッファストリーム解決策 ...

Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...

vue3 における vuex と pinia の落とし穴

目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

Nginx 逆生成 Mogilefs 分散ストレージ例の詳細な説明

1. 分散ストレージシステムの概要情報技術の継続的な発展により、利便性がもたらされる一方で、データ量...

MySQL 5.7.18 バージョンの無料インストール構成チュートリアル

MySQLはインストール版と無料インストール版に分かれていますインストール版の拡張子はmsi、無料イ...