説明するデータと組み合わせたチャートを使用すると、直感的な視覚効果を作成できます。大画面表示は、企業のデータ表示の一般的なシナリオになっています。大画面への適応をどのように実現するかは、解決しなければならない問題です。以下は、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 をよろしくお願いいたします。 |
<Head>タグに追加する<meta http-equiv="pragm...
1. Docker Compose の使用方法は docker コマンドの使用方法と非常に似ています...
DockerでOracle_11gをインストールする1. oracle_11gイメージを取得する d...
背景何が起こったかというと、Luzhu は偶然、宇宙で最高の外部スピーカーを備えた携帯電話について知...
目次主に使用されるPostmanの機能データの暗号化と復号化さまざまなパラメータ設定実際に送信された...
Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...
1. インストール1. MySQLをダウンロードするダウンロードアドレス: リンクアドレスブラウザで...
序文:多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反...
MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...
LNMPのようなアーキテクチャを持つウェブサイトは、一般的にPHPフレームワークに基づいて開発されて...
トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...
ユニアプリコード <テンプレート> <表示> <image v-for...
Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...
HTML5 で contentEditable 属性が導入されて以来、div は textarea ...
目次序文フラグメントの動機React Fragment の紹介と使用<React.Fragme...