説明するデータと組み合わせたチャートを使用すると、直感的な視覚効果を作成できます。大画面表示は、企業のデータ表示の一般的なシナリオになっています。大画面への適応をどのように実現するかは、解決しなければならない問題です。以下は、CSSのtransform属性とデザインパーセンテージを使用した解決策の1つです。不備があれば、ご指摘ください。 成し遂げる1. 大画面表示用の背景として、幅 = 100vw、高さ = 100% のコンテナ コンポーネントを準備します。 <div class="スクリーンアダプタ"> </div> .スクリーンアダプタ{ 幅:100vw; 最小高さ: 100%; 最大高さ: 100vh; オーバーフロー: 非表示; 背景: #0c1a3c; } 2. デザイナーが提供する設計図に従って、各領域の割合を計算できます。たとえば、合計サイズが w*h で、アイコン 1 つの幅と高さが w1 * h1 の場合、従来の画像カットを実現できます。このとき、1 → 2 から次のようになります。 <div class="スクリーンアダプタ"> <div class="content-wrap" :style="style"> <スロット></スロット> </div> </div> 小道具: { w: { // 設計図サイズ幅 type: Number, デフォルト: 1600 }, h: { // 設計図サイズ高さ type: Number, デフォルト: 900 } }, データ () { 戻る { スタイル: { 幅: this.w + 'px', 高さ: this.h + 'px', transform: 'scale(1) translate(-50%, -50%)' // デフォルトではスケーリングなし、垂直および水平の中央揃え} } } .content-wrap { 変換の原点: 0 0; 位置: 絶対; 上位: 50%; 左: 50%; } 3. 2 番目のステップに基づいて、大画面の具体的なサイズに応じてスケーリング比率を計算し、スケーリング比率を設定する必要があります。サイズ変更イベントをバインドするときには、揺れを防ぐことを忘れないようにし、ページが破棄されたときにリスニングイベントを削除することを忘れないでください。 マウントされた(){ this.setScale() this.onresize = this.debounce(() => this.setScale(), 100) window.addEventListener('resize', this.onresize) }, 破棄前() { window.removeEventListener('resize', this.onresize) }, メソッド: { // デバウンス (fn, t) { 定数遅延 = t || 500 タイマーを鳴らす 関数を返す(){ const args = 引数 if (タイマー) { タイムアウトをクリア(タイマー) } const コンテキスト = this タイマー = setTimeout(() => { タイマー = null fn.apply(コンテキスト、引数) }、 遅れ) } }, // スケーリング比率を取得する getScale () { 定数 w = window.innerWidth / this.w 定数 h = window.innerHeight / this.h w < h ? w : h を返す }, // スケーリング比率を設定する setScale () { this.style.transform = `scale(${this.getScale()}) translate(-50%, -50%)` } } 4. この時点で、全体的な構造が完成しました。アイコン コンポーネントの各部分の復元された設計図を前のスロットに配置するだけです。アイコン コンポーネントの各部分のサイズは、設計によって提供されるパーセンテージに基づいて決定できます。すべてのコードは、おおよそ次のようになります。 // スクリーンアダプタ.vue <テンプレート> <div class="スクリーンアダプタ"> <div class="content-wrap" :style="style"> <スロット></スロット> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { w: { タイプ: 数値、 デフォルト: 1600 }, 時間: { タイプ: 数値、 デフォルト: 900 } }, データ () { 戻る { スタイル: { 幅: this.w + 'px', 高さ: this.h + 'px', 変換: 'スケール(1) 変換(-50%, -50%)' } } }, マウントされた(){ this.setScale() this.onresize = this.Debounce(() => this.setScale(), 100) window.addEventListener('resize', this.onresize) }, 破棄前() { window.removeEventListener('resize', this.onresize) }, メソッド: { デバウンス (fn, t) { 定数遅延 = t || 500 タイマーを鳴らす 関数を返す(){ const args = 引数 if (タイマー) { タイムアウトをクリア(タイマー) } const コンテキスト = this タイマー = setTimeout(() => { タイマー = null fn.apply(コンテキスト、引数) }、 遅れ) } }, スケールを取得する() { 定数 w = window.innerWidth / this.w 定数 h = window.innerHeight / this.h w < h ? w : h を返す }, スケールを設定する() { this.style.transform = `scale(${this.getScale()}) translate(-50%, -50%)` } } } </スクリプト> <スタイル> .スクリーンアダプタ{ 幅: 100%; 最小高さ: 100vh; 最大高さ: 100vh; オーバーフロー: 非表示; 背景: #0c1a3c; } .content-wrap { 変換の原点: 0 0; 位置: 絶対; 上位: 50%; 左: 50%; } </スタイル> プロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりですフォントチャートはすべて比例して拡大縮小されていることがわかります 要約する大画面での Echats チャートの適応型実装に関するこの記事はこれで終わりです。大画面での適応型 Echats チャートの関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
サーバーB(172.17.166.11)の電源がオンまたは再起動されると、サーバーA(172.17....
2時間近くかけて、さまざまな方法を試しました。後で、whereでフィルタリングした後のデータ量が1ペ...
成果を達成する実装コードhtml <ヘッダー> <h1><em>...
こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...
簡単な説明以前 Centos7 で構築し、その後個人開発環境として Ubuntu 20.04 を使っ...
目次シーン設定ゲームリソース砲塔の回転動的に生成された弾丸衝突計算効果を高めるターゲットの動き弾薬庫...
目次ブートストラップと関連コンテンツの紹介グリッドシステムネストされた列列オフセット列の並べ替えナビ...
多くの人は、Scss を使用する瞬間からコンパイル方法を説明されてきました。したがって、コマンドのコ...
1. ダウンロード2. 減圧3. パス環境変数を追加し、mysqlが配置されているbinディレクトリ...
序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...
序文Linux のファイル権限管理はとにかく素晴らしいです。SUID、SGID、SBIT の機能を確...
Django アプリケーションを構築して拡張していくと、必然的に特定のタスクをバックグラウンドで自動...
HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...
日常業務では、ログを表示する必要がよくあります。たとえば、 tail コマンドを使用してログをリアル...
目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...