为弹性项目设置最大宽度?

新手上路,请多包涵

我正在尝试在我的网站上创建一个过滤器部分,内容都是动态生成的(所以我不能向它添加额外的父级),我们的样式指南使用弹性项目创建它们。我想在很大程度上保留这个功能。

我希望我的 3 个弹性项目有一个 max-width 并向左浮动,让我的非弹性项目向右浮动,在设置为最大宽度 1080px 的整体容器中像这样:

 Option 1    Option 2    Option 3                                    Non-flex Item

我已尝试设置 flex-align 值并遵循 此答案,但这似乎对此不起作用。

截至目前,这是我正在使用的代码:

 <ul class="container">
   <li class="child">One</li>
   <li class="child">Three</li>
   <li class="child">Three</li>
   <div class="non-flex">
       I'm not a flex item
   </div>
</ul>

 .container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    flex-direction: row;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    position: relative;
    max-width: 1080px;
    margin: 0 auto;
    padding: 0 20px;
    box-sizing: content-box;
}

.child {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    flex-direction: row;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    position: relative;
}

我还制作了一个 小提琴 供大家玩耍。

原文由 knocked loose 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 517
2 个回答

I would apply a width or min-width to the .child items (or left/right padding that creates the distance between them) and margin-left: auto 到最后一项,将其向右移动,独立于其他项:

https://jsfiddle.net/6vwny6bz/2/

 .container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  flex-direction: row;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  position: relative;
  max-width: 1080px;
  margin: 0 auto;
  padding: 0 20px;
  box-sizing: content-box;
}

.child {
  list-style: none;
  min-width: 80px;
  padding: 10px 0;
}

.non-flex {
  margin-left: auto;
  padding: 10px 0;
}
 <ul class="container">
  <li class="child">One</li>
  <li class="child">Three</li>
  <li class="child">Three</li>
  <div class="non-flex">
    I'm not a flex item
  </div>
</ul>

原文由 Johannes 发布,翻译遵循 CC BY-SA 3.0 许可协议

一个简单的解决方案是设置 margin-right: auto:

 margin-right: auto;

原文由 Masih Jahangiri 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题