javascript - 如何使用 javascript/jquery/css3 制作响应式 flex?

标签 javascript jquery css flexbox

我的 html 和 css 是这样的

.section {
  display: flex;
}
.section > .zone:first-child {
  flex: 1;
}
<div class="section">
  <div class="zone">
    [content]
  </div>
  <div class="zone">
    [content]
  </div>
</div>

这就是我想要的,它是两列,第一列的宽度最大化,第二列的宽度最小。但问题是,如果 [content] 部分中有固定宽度(或最小宽度)的元素。当窗口宽度足够小时,flex 会忽略它,只是将区域重叠在彼此之上。我想要这样,就在它们开始重叠之前(比如在窗口宽度 X),它应该移除 flex,以便区域以最大宽度垂直堆叠。

但是如果窗口宽度再次扩大(超过窗口宽度 X),那么它应该返回到 display:flex。

有谁知道如何使用 jquery 来实现这一点?

谢谢

最佳答案

我认为您正在尝试模仿响应能力而无需编写任何断点。因此,您可以创建两个变量来确定屏幕尺寸,而不是明确指定它们。

Fiddle Example for flex-wrap method.

.zones 通常堆叠,如果它们的总宽度 大于容器宽度。这是基本的环绕。 那个 sum-width 就是你的 X。当它大于容器宽度时,你的固定大小的元素开始重叠。

Add the outerWidth() of each .zone and assign any screen size below or equal to this as a small device.

xWidth = zone1 + zone2;
var smallDevice = windowWidth <= xWidth;

Flex 通常分配容器内的空间,因此如果包装,当有足够空间时元素不会堆叠。使用它,我们确定最宽的 .zone 和将其与 xWidth 组合以创建另一个断点条件。这在从小视口(viewport)缩小时很有用。因为按比例缩小,所以所有堆叠元素的宽度都是 100%。或多或少。

A size wider than the the largest .zone AND the xWidth could be a large device.

dynamicBreakpoint = Math.max(zone1, zone2); // determine the greater zone
var largeDevice = windowWidth > xWidth && windowWidth > dynamicBreakpoint;

然后,您可以根据窗口 resize() 事件将样式表附加到文档头部或从文档头部移除样式表。请记住检查样式表是否已添加。

stylesheet = "<style type='text/css' id='checkCSS'>" + styles + "</style>";

if (checkCSS === 0 && smallDevice) {
  $(stylesheet).appendTo('head');
} else if (checkCSS === 1 && largeDevice) {
  $('#checkCSS').remove();
}

如果处理两个以上的元素,您还可以使用数组或映射方法。只是想一想如何做到这一点。 肯定有更好的方法。

关于javascript - 如何使用 javascript/jquery/css3 制作响应式 flex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358860/

相关文章:

javascript - 将值从一个表单字段复制到另一个表单字段(不带复选框)

javascript - GetComputedStyle 到屏幕以外的其他媒体

javascript - 上传时使用标签 &lt;input type = "file"> 读取文件名并将其重命名为 mvc + angularjs

jQuery 与 CSS3 : Infinite background loop

php - 为前 3 篇文章添加单独的类(class) - Wordpress

javascript - 减少 nvd3 折线图中对数刻度的刻度数

javascript - 仅在提交时重新加载此表单或 div

javascript - 带有 Asp.NET 代码的 JQuery 消息

jquery - Bootstrap 网格在 IE 7 和 8 中不起作用

html - 如何使用内联 HTML 将超大图像置于浏览器窗口的中心?