当窗口变小时 Flex 项目不会缩小 [英] Flex items not shrinking when window gets smaller

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

问题描述

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

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 {最大宽度:100%;}.plot-col {弹性:0 0 50%;}.我的容器{显示:弹性;弹性方向:行;flex-wrap: 包裹;宽度:100%;高度:100%;}

<script src="https://cdn.plot.ly/plotly-latest.min.js"></脚本><身体><div class="my-container"><div class="plot-col"><div id="plotdiv1" class="plot-div"></div>

<div class="plot-col"><div id="plotdiv2" class="plot-div"></div>

JSFiddle:https://jsfiddle.net/bd0reepd/

我可能误解了 flexbox 的工作原理,但如果我用图像替换绘图,它们会按预期缩小.

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

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

解决方案

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

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

.plot-col {最小宽度:0;}

修正小提琴

更多信息:为什么 flex item 不会缩小超过内容大小?

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/

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

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?

解决方案

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

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;
}

Revised Fiddle

More info: Why doesn't flex item shrink past content size?

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

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆