ホームページ > ウェブフロントエンド > jsチュートリアル > SVG viewBox とpreserveAspectRatio はどのようにして d3.js ビジュアライゼーションをウィンドウのサイズ変更に応答させることができるのでしょうか?

SVG viewBox とpreserveAspectRatio はどのようにして d3.js ビジュアライゼーションをウィンドウのサイズ変更に応答させることができるのでしょうか?

Susan Sarandon
リリース: 2024-10-29 03:48:30
オリジナル
779 人が閲覧しました

How can SVG viewBox and preserveAspectRatio make d3.js visualizations responsive to window resizing?

幅と高さの動的な調整による d3.js ビジュアリゼーションの応答性の強化

応答性の高いビジュアライゼーションは、さまざまな画面サイズに適応するために重要です。これを実現するには、最初に固定サイズのグラフィック (960 x 500 ピクセル) を作成し、ウィンドウのサイズが変更されたときに動的に調整するヒストグラム視覚化スクリプトをどのように変更するか疑問に思うかもしれません。

ソリューションの中心

これまで、この問題に対処するには、サイズ変更イベントでチャートを再描画する必要がありました。ただし、よりエレガントで効率的なアプローチが登場しました。 の viewBox 属性と prepareAspectRatio 属性を変更することで、

<code class="html"><svg id="chart" viewBox="0 0 960 500"
  preserveAspectRatio="xMidYMid meet">
</svg></code>
ログイン後にコピー

この変更により、再描画を必要とせずにビジュアライゼーションをシームレスに拡大縮小し、縦横比を維持できるようになります。

縦横比の維持古いブラウザ

最新のブラウザのほとんどは viewBox に基づいてアスペクト比を自動的に決定できますが、古いブラウザでは追加の処理が必要な場合があります。このような場合、ウィンドウのサイズが変更されたときにグラフ要素のサイズを動的に変更して、内容が適切に拡大縮小されるようにすることができます。

<code class="javascript">var aspect = width / height,
    chart = d3.select('#chart');
d3.select(window)
  .on("resize", function() {
    var targetWidth = chart.node().getBoundingClientRect().width;
    chart.attr("width", targetWidth);
    chart.attr("height", targetWidth / aspect);
  });</code>
ログイン後にコピー

このコード スニペットは、元のアスペクト比を維持しながらグラフの幅と高さを調整します。

変革を目撃してください

実際の応答性の高いビジュアライゼーションを体験するには、ウィンドウまたはこのライブ デモの右下ペインのサイズを変更します: https://bl.ocks.org/mbostock/3043334。

以上がSVG viewBox とpreserveAspectRatio はどのようにして d3.js ビジュアライゼーションをウィンドウのサイズ変更に応答させることができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート