【问题标题】:How to position elements side-by-side using flexbox when they automatically wrap without filling up the row当元素自动换行而不填满行时,如何使用 flexbox 并排定位元素
【发布时间】:2019-01-14 03:37:55
【问题描述】:

我已经尝试了所有我知道的解决方案,让这两个页脚元素在移动设备上并排显示。我在 wordpress 网站 (www.med-tac.com) 上有三个页脚小部件,我正在尝试使用 @media 方法在移动设备上重新排序和重新对齐它们以适应我的屏幕尺寸。

我正在尝试将 1 和 3 放在同一行,并尝试调整其他属性以使其正常工作,但现在我正在使用 flexbox 尝试完成此操作,但很乐意恢复到任何解决方案有效。

我尝试过网格布局,左浮动和右浮动方法,flexbox方法和显示内联块方法,即使手动将宽度减小到更小,它们都不会在同一行显示元素比移动页脚宽度。

@media (max-width: 480px){


.secondary {
display:flex;
flex-flow: row wrap;


  }

#footer-sidebar1 {

  margin-top:-5px;
  top:5px;
  order:2;
}

 #footer-sidebar2 {

  margin-right: 20px !important;
  right: 10px;
  width:325px !important;
  bottom:25px;
  order:1;

  }

#footer-sidebar3 {

  order:3;

  }

}

我试图让侧边栏 1 和 3 并排显示在同一行上,但它们相互重叠。

【问题讨论】:

  • 不要使用宽度来伸缩元素,而是使用flex-grow:1;,或者另一种方式是,不需要使用媒体查询和flex-grow:1;,只需将flex-wrap:wrap添加到父级,它会自动包裹在较小的屏幕或取决于内容宽度,只需尝试两者。

标签: css flexbox flexboxgrid


【解决方案1】:

如果你想在第一行有项目1和3,你需要设置项目3的顺序小于项目2的顺序。

例如:

.secondary {
  display: flex;
  flex-flow: row wrap;
}

.secondary div {
  background-color: lightblue;
}

.secondary:after {
  content: "";
  order: 2;
  flex-basis: 110%;
}

#footer-sidebar1 {
  flex-basis: 48%;
  order: 3;
}

#footer-sidebar2 {
  order: 1;
  margin-right: 100px;
}

#footer-sidebar3 {
  flex-basis: 48%;
  order: 4;
  margin-left: 10px;
}
<div class="secondary">
  <div id="footer-sidebar1">sidebar 1 </div>
  <div id="footer-sidebar2">sidebar 2 </div>
  <div id="footer-sidebar3">sidebar 3 </div>
</div>

【讨论】:

  • 我实际上确实希望侧边栏 2 在顶部,但在第二行的下方是 1 和 3。我只是无法将 1 和 3 放在同一行。
  • 我已经改变了顺序,并设置了一个pseduo元素让元素换行到下一行。它应该符合您的要求
  • 非常感谢您抽出宝贵时间发布此答案,但 sidebar1 和 sidebar3 仍然彼此重叠,而不是并排,这使得所有三个边栏都堆叠在一起垂直。
猜你喜欢
  • 2013-05-24
  • 2017-12-17
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多