当窗口变小时,Flex 项目不会缩小

Flex items not shrinking when window gets smaller(当窗口变小时,Flex 项目不会缩小)
本文介绍了当窗口变小时,Flex 项目不会缩小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 CSS flexbox 中放置两个相邻的绘图.我希望它们在调整窗口大小时调整大小.当窗口变大时,它按预期工作,但当窗口变小时,绘图不会缩小.

I'm trying to fit two plotly plots next to each other inside a CSS flexbox. I want them to resize when the window is resized. It works as expected when the window grows, but the plots don't shrink when the window gets smaller.

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 的工作原理,但是如果我用图像替换绘图,它们会按预期缩小.

I am probably misunderstanding how flexbox works, but if I replace the plots with images, they shrink as expected.

我试图调试这个并找到了plotlys内部函数plotAutoSize,它调用window.getComputedStyle并相应地设置绘图大小.我使用 console.log 来查看 window.getComputedStyle 的返回值,当窗口缩小时,它们会卡在"最大尺寸.

I have tried to debug this and found plotlys internal function plotAutoSize, which calls window.getComputedStyle and sets the plot size accordingly. I have used console.log to look at the return values of window.getComputedStyle and they get "stuck" at the largest size when the window shrinks.

如何让绘图缩小以适应窗口并在同一行中彼此相邻?

How can I get the plots to shrink to fit the window and stay next to each other in the same row?

推荐答案

弹性项目的初始设置是 min-width: auto.这意味着默认情况下,弹性项目不能小于其内容.

An initial setting on flex items is min-width: auto. This means that a flex item cannot, by default, be smaller than its content.

您可以使用 min-width: 0overflow 使用除 visible 以外的任何值覆盖此设置.将此添加到您的代码中:

You can override this setting with min-width: 0 or overflow with any value other than visible. Add this to your code:

.plot-col {
    min-width: 0;
}

修订小提琴

更多信息:为什么弹性项目不缩小超过内容大小?

这篇关于当窗口变小时,Flex 项目不会缩小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)