当前位置: 首页 > 面试题库 >

使用flexbox CSS的左列和右列堆叠

端木弘方
2023-03-14
问题内容

每个浏览器都不同,因此:

Firefox(壁虎): https : //dxr.mozilla.org/mozilla-central/source/layout/style/res/html.css。或者,浏览resource://gre-resources/并查看html.css。
Chrome / Safari(WebKit): http : //trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
Chrome(闪烁): https : //chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css
Internet Explorer(Trident),旧版本:http://web.archive.org/web/20170122223926/http://www.iecss.com/
您还可以查看HTML5 Boilerplate样式表,该样式表 “使很多内容的显示正常化,而无需重新设置传统意义上的内容”。它还修复了许多错误/不一致。在大屏幕上,我想在左侧创建一列,在右侧创建具有2个堆叠框的另一列。

在小屏幕上,这些列应堆叠为单个列。但是,框的顺序应为2、1、3。

我将flex容器设置为flex-direction: columnflex-wrap: wrap,将box 1设置为flex-basis: 100%,但这不会使后两个项目换行到下一列。

在flexbox中如何实现这种布局?

这是我到目前为止的演示:

.container {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
}
.cell {
  background: #ccc;
  border: solid 3px black;
  width: 50%;
}
.cell-1 {
  flex-basis: 100%;
}
@media (max-width: 500px) {
  .cell {
    width: 100%;
  }
  .cell-1 {
    order: 2;
  }
  .cell-2 {
    order: 1;
  }
  .cell-3 {
    order: 3;
  }
}
<h1>Vertical Boxes</h1>
<p>Goal: Have one box on the left, and two boxes on the right that are stacked. All without nesting, so that the order of the boxes can be changed on smaller screen sizes.</p>
<div class="container">
  <div class="cell cell-1">
    <h2>One</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit
    amet, consectetur adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit amet, consectetur
    adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure.
  </div>
  <div class="cell cell-2">
    <h2>Two</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste mollitia temporibus id sint illum doloremque pariatur nulla vel soluta, nostrum vitae, suscipit ea natus sed eaque in velit deserunt deleniti!
  </div>
  <div class="cell cell-3">
    <h2>Three</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit, architecto perferendis voluptatum accusantium est ipsam fugit, laudantium fugiat nostrum consectetur earum. Asperiores, similique deleniti nobis nemo error, iste iure architecto.
  </div>
</div>

问题答案:

好像您快到了。仅需两个步骤:

定义伸缩容器的高度

如果没有定义高度,某些浏览器可能不知道在哪里包装。尝试这个:

.container {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    height: 500px; /* new; value just for demo purposes */
}

关闭移动视图上的环绕

@media (max-width: 500px) {
   .container { flex-wrap: nowrap; } /* new */
   .cell { width: 100%; }
   .cell-1 { order: 2; }
   .cell-2 { order: 1; }
   .cell-3 { order: 3; }
}
.container {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  height: 500px;
}
.cell {
  background: #ccc;
  border: solid 3px black;
  width: 50%;
}
.cell-1 {
  flex-basis: 100%;
}
@media (max-width: 500px) {
  .container {
    flex-wrap: nowrap;
  }
  .cell {
    width: 100%;
  }
  .cell-1 {
    order: 2;
  }
  .cell-2 {
    order: 1;
  }
  .cell-3 {
    order: 3;
  }
}
<h1>Vertical Boxes</h1>
<p>Goal: Have one box on the left, and two boxes on the right that are stacked. All without nesting, so that the order of the boxes can be changed on smaller screen sizes.</p>
<div class="container">
  <div class="cell cell-1">
    <h2>One</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit
    amet, consectetur adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit amet, consectetur
    adipisicing elit. Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure. Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    Iusto pariatur rerum, illum accusantium cupiditate ipsam, eaque quae fugit cum assumenda ad. Modi, excepturi. Assumenda, nobis, consequatur? Aliquid repellendus quis, iure.
  </div>
  <div class="cell cell-2">
    <h2>Two</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste mollitia temporibus id sint illum doloremque pariatur nulla vel soluta, nostrum vitae, suscipit ea natus sed eaque in velit deserunt deleniti!
  </div>
  <div class="cell cell-3">
    <h2>Three</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit, architecto perferendis voluptatum accusantium est ipsam fugit, laudantium fugiat nostrum consectetur earum. Asperiores, similique deleniti nobis nemo error, iste iure architecto.
  </div>
</div>


 类似资料:
  • 问题内容: 假设我有一个,其中将包含一组元素(div),这些元素可能具有不同的高度,但是所有元素的宽度都相同。 目前,我已经通过同位素+砌体实现了这一目标,但是由于某些浏览器已经支持CSS3多列,因此我希望为这些浏览器提供唯一的CSS解决方案,而其余的则使用Javascript。 这是我一直在尝试的CSS: 但是,这使元素的流动从上到下从左到右。我想要的是左右自上而下的流程。这是我想要的示例: 但

  • Vavr似乎解决了我的一个问题,一些方法进行了大量检查,并返回CalculationError或CalculationResult。 我有一个存储错误和结果的包装器 是否有任何简洁的解决方案来转换来自集合的流

  • 我读过segues上的其他帖子,但没有一篇能解决我的问题。 简单地说,我的ViewController就像一本书一样被订购。我希望从左到右的向后过渡(例如:从第9页到第8页)始终存在(滑动)。我想从右到左向前过渡(从第9页到第10页)。 是的,如果您一页接一页地分页,我的导航控制器后退按钮(左上角)会显示为这样。但是,如果您从索引跳入,那么导航控制器上的后退功能会将您带回索引。 我的目标是,如果用

  • 如何以功能性方式使用vavr的“左”或“右”? 我有一个方法,它返回一个 到目前为止,我找到的最接近的解决方法是biMap()方法,它看起来像 可以说,映射函数应该用于映射而不是副作用,因此即使它有效,我也在寻找替代方案。

  • 问题内容: 使用典型的CSS,我可以在两列之间向左浮动另一列,并在两者之间留出一定的间距。我该如何使用flexbox? 问题答案: 您可以添加到父元素。这样做时,子级flexbox项将与相对侧对齐,并在它们之间留有空间。 您也可以添加到第二个元素以使其向右对齐。

  • 问题内容: 我的要求很简单: 2列,其中正确的列具有固定的大小 。不幸的是,无论是在stackoverflow上还是在Google中,我都找不到可行的解决方案。如果我在自己的上下文中实现,那么那里描述的每个解决方案都会失败。当前的解决方案是: 我得到以上代码的以下内容: 请指教。非常感谢! 问题答案: 除去左列上的浮子。 在HTML代码处,右列必须位于左列之前。 如果右边有一个浮点数(和宽度),并