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ステートメントの使用に関する詳細な説明

推薦する

虫眼鏡の詳細のJavaScript実装

目次1. レンダリング2. 実施原則3. まとめ1. レンダリング 2. 実施原則幅と高さが等しい拡...

HTML で特定のテキストを非表示にするにはどうすればよいでしょうか?

テキスト非表示コード、HTML 内の特定のテキストを非表示にするコードをコピーコードは次のとおりです...

Bootstrap3.0 学習ノートテーブル関連

この記事では、Webサイトを作ったことがある人にとっては馴染みのあるテーブルについて主に説明します。...

Dockerを使用してNextCloudネットワークディスクを展開する方法

NextCloud コンピュータ上の任意のファイルやフォルダを共有し、NextCloud サーバーと...

ウェブデザインと制作に関する科学的原則と提案の要約

<br />ネットワーク設計の分野では、アイトラッキングに関する研究が非常に盛んに行われ...

要素 ui の el-table の列にさまざまなスタイルのデータを動的に実装する例

問題の説明Ele.me UI のフレームワークでは、入力データは el-form であり、出力データ...

1つの記事でJSONPの原理と応用を理解する

目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...

フロントエンド HTML+CSS+JS を使用してシンプルな TODOLIST 関数を開発する (メモ帳)

目次1. 簡単な紹介2. スクリーンショットを実行する3. コードの紹介4. まとめ1. 簡単な紹介...

Vue印刷機能を実装する2つの方法の概要

方法1: npm経由でプラグインをインストールする1. npm install vue-print-...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

MySQLはデータテーブル内の既存のテーブルを分割します

目次操作方法操作プロセス既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移...

JSにおけるnewの原理と実装について詳しく話しましょう

目次意味コンストラクタ本体は異なる戻り値なし戻りオブジェクト非オブジェクトを返すプロパティバインディ...

MySQLでクエリキャッシュを実行する方法と失敗を解決する方法

関数を使用する前にパラメータのプロパティを理解して、関数の使い方をより深く理解する必要があることは誰...