検索
ホームページウェブフロントエンドブートストラップのチュートリアルBootstrap タブでタブを切り替えるときのチャート表示の問題の解決策についての簡単な説明

この記事では、Bootstrap開発中にタブが切り替わるチャート表示の問題を解決する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Bootstrap タブでタブを切り替えるときのチャート表示の問題の解決策についての簡単な説明

レスポンシブ ページを作成する場合、多くの場合、より多くのサイズのデバイスのインターフェイスの互換性を考慮する必要があります。一般に、インターフェイス要素をカスタマイズできるように、ピクセルをハードコーディングすることはできません。デバイスのサイズに応じて調整されます。さまざまな動的調整が行われますが、タブの最初のページは正常に表示されますが、他のページを切り替えるときに表示内容が動的に調整されないなど、問題が発生することがあります。このエッセイは、タブのタブページを切り替えたときのチャート表示の問題を解決する方法と、チャート コントロールがウィンドウの動的な変更とサイズ変更を実現する方法を紹介します。 [関連する推奨事項: "bootstrap チュートリアル "]

1. 従来のチャート処理

たとえば、次のインターフェイスには 2 つのタブがありますに示すように、最初のタブ ページは通常どおり表示されます。

インターフェイス コードの一部は次のとおりです

<div class="portlet-body">
    <div class="tab-char" id="lineContainer1" style="height:300px;max-width:500px;"></div>
</div>

iPhone に基づいてシミュレートされたデバイスのサイズを表示すると、画像が効果的に処理されていない ズームが正しく表示されます。つまり、タブを切り替えるときに、2 番目のタブ ページのグラフのサイズを正しく拡大縮小できません。

次に、タブが切り替えられたときに正しい効果を実現したい場合は、処理のためにタブ切り替えイベントを追跡する必要があります。

インターネットで解決策を探したところ、「ブートストラップ タブ ページ (タブ) プラグインの切り替え時に Echarts が表示されない問題を解決する」というエッセイの 1 つで、非常に良いアイデアが紹介されていました。

ただし、私はいくつかの統合と変換を行い、実際に彼が言及したいくつかの重要な点を達成しましたが、より単純化されました:

1. ブートストラップは応答性の高いレイアウトを実装します
2. Highcharts は自己適応を実現します
# 3. タブ切り替えやズームは正常に表示されます #ここでは HighChart チャート コントロールを使用していますが、原理は同様に、チャート コレクションに対してトラバーサル プロセスを実行する必要がありますが、トラバーサル プロセスではより便利な JQuery ドキュメント検索メソッドを使用できます。

2. タブ切り替え時のチャート表示の問題を解決する

たとえば、チャート宣言とチャートデータを動的に取得するコードは次のとおりです。 #
//初始化对象
    $(function () {
        var chart1 = new Highcharts.Chart({
            chart: {
                renderTo: "container1",
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false,
            },
            title: {
                text: &#39;集团分子公司人员组成&#39;
            },
            tooltip: {
                pointFormat: &#39;{series.name}: <b>{point.y}</b>&#39;
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: &#39;pointer&#39;,
                    dataLabels: {
                        enabled: true,
                        format: &#39;<b>{point.name}</b>: {point.percentage:.1f} %&#39;,
                        style: {
                            color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || &#39;black&#39;
                        }

                    },
                    //showInLegend: true
                }
            },
            series: [{
                type: &#39;pie&#39;,
                name: &#39;人员数量&#39;,
                data: []
            }]
        });

        //通过Ajax获取图表1数据
        $.ajaxSettings.async = false;
        var data1 = [];
        $.getJSON("/User/GetCompanyUserCountJson", function (dict) {                
            for (var key in dict) {
                if (dict.hasOwnProperty(key)) {
                    data1.push([key, dict[key]]);
                }
            };
            chart1.series[0].setData(data1);
        });

この部分は単なる参考であり、実際に機能するのはこれらのコードではありません。

実際に機能するのは、以下に示すように、Boosttrap のタブ変更イベントを使用して処理することです。

//TAB页面变化的时候,调整图表宽度
        $(&#39;.grid_tab&#39;).on(&#39;shown.bs.tab&#39;, function () {
            var target = $(this).attr(&#39;href&#39;);
            var controls = $(target).find(&#39;.tab-char&#39;);
            for(var i=0;i<controls.length; i++)
            {
                $(controls[i]).highcharts().reflow();
            }            
        });

        //窗口大小变化的时候,调整图表宽度
        $(window).resize(function () {
            var controls = $(document).find(&#39;div.tab-char&#39;);
            for (var i = 0; i < controls.length; i++) {
                $(controls[i]).highcharts().reflow();
            }
        });

上記の JS は、JQuery を使用して対応する highcharts オブジェクトを動的に走査し、その .reflow() 関数を呼び出して更新します。

以下のチャートのタブ タブ ページの HTML コードを参照すると、class="tab-pane" と class="tab-char" の 2 つの p レイヤーがあることがわかります。これらは 2 つの p レイヤーです。 JQuery を使用してチャートを動的に検索し、キーを制御および処理します。

<div class="tab-pane fade active in" id="tab_2_1">
                <div class="row">
                    <div class="col-md-6 col-sm-6">
                        <div class="portlet light ">
                            <div class="portlet-title">
                                <div class="caption">
                                    <i class="icon-bar-chart font-green-sharp hide"></i>
                                    <span class="caption-subject font-green-sharp bold uppercase">图表1</span>
                                </div>
                                <div class="actions">
                                    <div class="btn-group btn-group-devided" data-toggle="buttons">
                                        <label class="btn btn-transparent purple btn-circle btn-sm active">
                                        <input type="radio" name="options" class="toggle" id="option1">更多...</label>
                                    </div>
                                </div>
                            </div>
                            <div class="portlet-body">
                                <div class="tab-char" id="container1" style="height: 300px;max-width:500px"></div>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-6 col-sm-6">
                        <div class="portlet light ">
                            <div class="portlet-title">
                                <div class="caption">
                                    <i class="icon-bar-chart font-green-sharp hide"></i>
                                    <span class="caption-subject font-green-sharp bold uppercase">3D图表2</span>
                                </div>
                                <div class="actions">
                                    <div class="btn-group btn-group-devided" data-toggle="buttons">
                                        <label class="btn btn-transparent purple btn-circle btn-sm active">
                                            <input type="radio" name="options" class="toggle" id="option1">更多...
                                        </label>
                                    </div>
                                </div>
                            </div>
                            <div class="portlet-body">                                
                                <div class="tab-char" id="container2" style="height: 300px;max-width:500px"></div>
                            </div>
                        </div>
                    </div>

jS の処理時に関数が正しく実行されているかどうかを判断できない場合は、関数を追跡して対応するオブジェクトを取得できます。以下は Chrome で追跡した結果であり、関数の各ステップを追跡できます。道。


#または、ウィンドウが変わったときにキャプチャしたオブジェクトを確認することもできます。

オブジェクトを取得した後、それを対応するコントロールに変換し、そのインターフェイスを呼び出して更新します。

$(controls[i]).highcharts().reflow();

上記は実装アイデアと追跡処理方法であり、最後に、上の図は問題の解決策を示しています。

プログラミング関連の知識について詳しくは、プログラミング入門

をご覧ください。 !

以上がBootstrap タブでタブを切り替えるときのチャート表示の問題の解決策についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
ブートストラップの分解:それが何であり、なぜそれが重要なのかブートストラップの分解:それが何であり、なぜそれが重要なのかApr 14, 2025 am 12:05 AM

bootstrapisafree、open-sourcessframeworkthatsthatssponsiveandmobile-firstwebitedevelopment。

ブートストラップ:Webデザインを簡単にしますブートストラップ:Webデザインを簡単にしますApr 13, 2025 am 12:10 AM

Webデザインがブートストラップを簡単にするものは何ですか?そのプリセットコンポーネント、レスポンシブデザイン、豊富なコミュニティサポート。 1)プリセットコンポーネントライブラリとスタイルにより、開発者は複雑なCSSコードの作成を避けることができます。 2)ビルトイングリッドシステムは、レスポンシブレイアウトの作成を簡素化します。 3)コミュニティサポートは、豊富なリソースとソリューションを提供します。

Bootstrapの影響:Web開発の加速Bootstrapの影響:Web開発の加速Apr 12, 2025 am 12:05 AM

BootstrapはWeb開発を加速し、事前に定義されたスタイルとコンポーネントを提供することにより、開発者は迅速にレスポンシブWebサイトを構築できます。 1)プロジェクトの数日以内に基本的なレイアウトを完了するなど、開発時間を短縮します。 2)SASS変数とミキシンを通じて、ブートストラップにより、カスタムスタイルが特定のニーズを満たすことができます。 3)CDNバージョンを使用すると、パフォーマンスを最適化し、負荷速度を向上させることができます。

ブートストラップの理解:コアの概念と機能ブートストラップの理解:コアの概念と機能Apr 11, 2025 am 12:01 AM

Bootstrapはオープンソースのフロントエンドフレームワークであり、その主な機能は、開発者がレスポンシブWebサイトを迅速に構築できるようにすることです。 1)複雑なUI効果の実装を容易にするために、事前定義されたCSSクラスとJavaScriptプラグインを提供します。 2)ブートストラップの作業原則は、メディアクエリを通じてレスポンシブデザインを実現するために、そのCSSおよびJavaScriptコンポーネントに依存しています。 3)使用の例には、ボタンの作成などの基本的な使用法や、カスタムスタイルなどの高度な使用法が含まれます。 4)一般的なエラーには、クラス名のスペルミスやファイルの導入が誤っています。ブラウザ開発者ツールを使用してデバッグすることをお勧めします。 5)パフォーマンスの最適化は、カスタムビルドツールを通じて実現できます。

ブートストラップディープダイブ:レスポンシブデザインと高度なレイアウト技術ブートストラップディープダイブ:レスポンシブデザインと高度なレイアウト技術Apr 10, 2025 am 09:35 AM

ブートストラップは、グリッドシステムとメディアクエリを介してレスポンシブデザインを実装し、さまざまなデバイスにウェブサイトを適合させます。 1.事前定義されたクラス(COL-SM-6など)を使用して、列の幅を定義します。 2。グリッドシステムは12列に基づいており、合計が12。3を超えないことに注意する必要があります。ブレークポイント(SM、MD、LGなど)を使用して、異なる画面サイズの下のレイアウトを定義します。

ブートストラップインタビューの質問:夢のフロントエンドの仕事を着陸させますブートストラップインタビューの質問:夢のフロントエンドの仕事を着陸させますApr 09, 2025 am 12:14 AM

Bootstrapは、レスポンシブWebサイトとアプリケーションを迅速に開発するためのオープンソースのフロントエンドフレームワークです。 1.レスポンシブ設計、一貫したUIコンポーネント、迅速な発展の利点を提供します。 2。グリッドシステムは、12列構造に基づいてフレックスボックスレイアウトを使用し、.container、.row、.col-sm-6などのクラスを通じて実装されています。 3.カスタムスタイルは、SASS変数を変更するか、CSSを上書きすることで実装できます。 4.一般的に使用されるJavaScriptコンポーネントには、モーダルボックス、カルーセル図、折りたたみが含まれます。 5.最適化パフォーマンスは、必要なコンポーネントのみをロードし、CDNを使用し、マージファイルを圧縮することで実現できます。

Bootstrap&JavaScriptの統合:動的な機能と機能Bootstrap&JavaScriptの統合:動的な機能と機能Apr 08, 2025 am 12:10 AM

BootstrapとJavaScriptをシームレスに統合して、Webページに動的な機能を与えることができます。 1)JavaScriptを使用して、モーダルボックスやナビゲーションバーなどのブートストラップコンポーネントを操作します。 2)jQueryが正しくロードされていることを確認し、一般的な統合の問題を回避します。 3)イベント監視とDOM操作を通じて、複雑なユーザーの相互作用と動的効果を実現します。

ブートストラップ検索バーを取得する方法ブートストラップ検索バーを取得する方法Apr 07, 2025 pm 03:33 PM

ブートストラップを使用して検索バーの値を取得する方法:検索バーのIDまたは名前を決定します。 JavaScriptを使用してDOM要素を取得します。要素の値を取得します。必要なアクションを実行します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター