説明するデータと組み合わせたチャートを使用すると、直感的な視覚効果を作成できます。大画面表示は、企業のデータ表示の一般的なシナリオになっています。大画面への適応をどのように実現するかは、解決しなければならない問題です。以下は、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 をよろしくお願いいたします。 |
私のプロジェクトの特定の機能ではサーバーが rabbitmq にメッセージを送信する必要があるため、...
undefined JavaScript では、値が undefined かどうかを判断したい場合は...
成果を達成する 実装コードhtml <div id=コンテナ> いらっしゃいませ <...
この記事の例では、ログインと登録の効果を実現するためのvueプロジェクトの具体的なコードを共有してい...
CJK は CJK Unified Ideographs の略称で、「中国語、日本語、韓国語の統一表...
glibc は、gnu によってリリースされた libc ライブラリ、つまり c ランタイム ライブ...
コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...
1. this.$router.push() 1. ビュー <テンプレート> <d...
今日、プロジェクトのホームページにアクセスするために Tomcat を設定していたところ、404 エ...
データベースでcreate tableステートメントを実行する テーブル `sys_acl` を作成...
IE8 の新機能 Web スライス (Web スライス) Microsoft は 3 月 20 日...
MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...
遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...
[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...
目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...