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

推薦する

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

VS2022 リモート デバッグ ツールの使い方

WeChat 関連サービスをデバッグする場合など、職場のサーバー環境でリモートデバッグを行う必要があ...

タブバーの切り替え効果を実現するJavaScript

タブバー: 異なるタブをクリックすると異なるコンテンツが表示され、クリックしたタブのスタイルが変更さ...

Vue バインディング オブジェクト、配列データを動的にレンダリングできないケースの詳細な説明

プロジェクトシナリオ: Dark Horse Vueプロジェクト管理の実践、製品分類の取得、拡張バー...

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

Tomcat の 404 エラーの解決方法の詳細な説明

Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...

将来的に人気のあるウェブサイトのナビゲーションの方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

Vue が Bibibili のホームページを模倣する際の問題

エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...

nginx + セカンダリドメイン名 + https サポートを使用する

ステップ1: Alibaba Cloudプライマリドメイン名にセカンダリドメイン名を追加する2 番目...

要素の水平方向の中央揃えを実現する3つの方法と、固定レイアウトとフローレイアウトの概念の理解

CSS でテキストを中央揃えにするプロパティは非常に簡単に実現できます。text-align:cen...

Vueの学習手順

目次1. v-text (v-instruction name = "variable&q...

JSはモバイル端末の画面を1つずつ上下にスライドさせる機能を実装します

この記事では、モバイル端末を一度に1画面ずつ上下にスライドさせるためのJSの具体的なコードを参考まで...

MySQLとOracleの違いを簡単に説明してください

1. Oracle は大規模データベースですが、MySQL は小規模から中規模のデータベースです。O...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...