私は、CSSフレックスボックス内で2つのプロット図を隣り合わせに収めようとしています。ウィンドウのサイズが変更されたときにサイズを変更してほしい。ウィンドウが大きくなると期待どおりに動作しますが、ウィンドウが小さくなってもプロットは縮小しません。
var trace1 = {};
var trace2 = {};
var plotdiv1 = document.getElementById("plotdiv1");
var plotdiv2 = document.getElementById("plotdiv2");
Plotly.newPlot(plotdiv1, [trace1]);
Plotly.newPlot(plotdiv2, [trace2]);
window.addEventListener("resize", function() {
Plotly.Plots.resize(plotdiv1);
Plotly.Plots.resize(plotdiv2);
});
.plot-div {
max-width: 100%;
}
.plot-col {
flex: 0 0 50%;
}
.my-container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 100%;
height: 100%;
}
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<body>
<div class="my-container">
<div class="plot-col">
<div id="plotdiv1" class="plot-div"></div>
</div>
<div class="plot-col">
<div id="plotdiv2" class="plot-div"></div>
</div>
</div>
</body>
JSFiddle: https://jsfiddle.net/bd0reepd/
おそらくflexboxがどのように機能するかを誤解しているかもしれませんが、プロットをイメージに置き換えると、予想どおりに縮小します。
私はこれをデバッグしようとしましたが、window.getComputedStyle
を呼び出し、それに応じてプロットサイズを設定するplotlys内部関数plotAutoSize
を見つけました。 console.log
を使用してwindow.getComputedStyle
の戻り値を確認しましたが、ウィンドウが縮小すると最大サイズで「スタック」します。
ウィンドウに収まるようにプロットを縮小して、同じ行で隣り合わせに保つにはどうすればよいですか?
フレックスアイテムの初期設定はmin-width: auto
です。つまり、デフォルトでは、フレックスアイテムをそのコンテンツより小さくすることはできません。
この設定は、min-width: 0
またはoverflow
以外の値でvisible
で上書きできます。これをコードに追加します。
.plot-col {
min-width: 0;
}