【问题标题】:having some layout issues with FlexboxFlexbox 有一些布局问题
【发布时间】:2016-03-04 01:10:34
【问题描述】:

我正在玩 flexbox,但仍然遇到一些问题。我几乎拥有了我想要的东西:

  1. 第一个容器左上角的标签
  2. 第一个容器右上角的标签
  3. 第一个容器底部中间的标签
  4. “标签”上方有“数字”的框
  5. 文本在中心区域。
  6. 在一行中有多个(我还没有这样做,现在如果我再做一个,那将是它自己的行)。

问题

  1. 想要绿框和蓝框之间的间距。试图使用“空间环绕”,但它似乎没有做我想要的。我也希望容器大小相同,但不知道如何做到这一点,以便响应。
  2. 希望中心的文本实际上也成为自身的中心,而不仅仅是“p”标签。
  3. 希望将它放在更大的屏幕上,一条线上可以容纳多个容器。不确定我是否需要在它周围包裹另一个 flex 容器。
  4. 根容器之间的间距。

.flex-container {

  display: flex;

  flex-direction: column;

  background-color: grey;

  padding: 0;


}

.flex-sub-container {

  display: flex;

  flex-direction: row;

  justify-content: space-between;

}

.flex-item-left-corner {

  /*background-color: red;*/

  margin: 0;

  padding: 0;

}

.flex-item-right-corner {

  /*background-color: red;*/

  margin: 0;

  padding: 0;

  justify-content: flex-end;

}

.flex-bottom-middle {

  /*background-color: red;*/

  align-self: center;

  margin: 0;

}

.flex-sub-container2 {

  /*background-color: yellow;*/

  display: flex;

  flex-direction: row;

  justify-content: center;

}

.flex-sub-item {

  background-color: green;

  display: flex;

  flex-direction: column;

  align-items: center;

  flex-grow: 1;

}

.flex-qty {

  margin: 0;

  font-size: 28pt;

}

.flex-qty-label {

  margin: 0 5pt 5pt 5pt;

}

.flex-center {

  background-color: royalblue;

  align-self: center;

  font-size: 15pt;

  flex-grow: 3;

}
<div class="flex-container card-panel teal lighten-2">
  <div>
    <div class="flex-sub-container">
      <p class="flex-item-left-corner">Left Top</p>
      <p class="flex-item-right-corner">Right Top</p>
    </div>
  </div>
  <div>
    <div class="flex-sub-container2">
      <div class="flex-sub-item">
        <p class="flex-qty">7</p>
        <p class="flex-qty-label">Label</p>
      </div>
      <p class="flex-center">This is my very long center text.</p>
    </div>
  </div>
  <p class="flex-bottom-middle">Bottom Middle</p>
</div>

<div class="flex-container card-panel teal lighten-2">
  <div>
    <div class="flex-sub-container">
      <p class="flex-item-left-corner">Left Top</p>
      <p class="flex-item-right-corner">Right Top</p>
    </div>
  </div>
  <div>
    <div class="flex-sub-container2">
      <div class="flex-sub-item">
        <p class="flex-qty">7</p>
        <p class="flex-qty-label">Label</p>
      </div>
      <p class="flex-center">This is my very long center text.</p>
    </div>
  </div>
  <p class="flex-bottom-middle">Bottom Middle</p>
</div>

【问题讨论】:

  • 你有这应该是什么样子的图像吗?这比“文字图片”要好得多。
  • 你的意思是这样吗 - codepen.io/Paulie-D/pen/dMorKg
  • 是的,我认为这涵盖了我所有的问题(我没有在小屏幕上检查过)。第 6 步仍然未完成。在我的大屏幕上,我想在同一行上看到这两个主容器。你能强调一下你所做的改变吗?
  • 正如你所说,你可以添加一个弹性容器,但你仍然需要媒体查询。
  • 啊,没有媒体查询就不行吗?认为如果在较小的屏幕上没有空间或其他东西,它只会在较小的设备上将其推送到每行一个。

标签: html css flexbox


【解决方案1】:

想要绿框和蓝框之间的间距。试图使用“空间环绕”,但它似乎没有做我想要的。

只是在它们之间添加了一些边距。 spaceoptions 仅在有实际空间时才有效......即子宽度之和小于父宽度。

我也希望容器大小相同,但不知道如何做到这一点,以便响应。

希望中心的文本实际上是自身的中心,而不仅仅是“p”标签。

p 包裹在 div 中,使两个 div 高度相等,然后像往常一样将文本居中

希望将它显示在更大的屏幕上,可以在一条线上放置多个容器。不确定我是否需要在它周围包裹另一个 flex 容器。

正如您所说,您可以添加一个 flex-container(带包装),但您仍然需要添加相关的媒体查询。

根容器之间的间距。

只要margin-bottom

.flex-container {
  display: flex;
  flex-direction: column;
  background-color: grey;
  padding: 0;
  margin-bottom: 1em;
}
.flex-sub-container {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
.flex-item-left-corner {
  /*background-color: red;*/
  margin: 0;
  padding: 0;
}
.flex-item-right-corner {
  /*background-color: red;*/
  margin: 0;
  padding: 0;
  justify-content: flex-end;
}
.flex-bottom-middle {
  /*background-color: red;*/
  align-self: center;
  margin: 0;
}
.flex-sub-container2 {
  /*background-color: yellow;*/
  display: flex;
  justify-content: center;
}
.flex-sub-item {
  background-color: green;
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-grow: 1;
}
.flex-qty {
  margin: 0;
  font-size: 28pt;
}
.flex-qty-label {
  margin: 0 5pt 5pt 5pt;
}
.flex-center {
  background-color: royalblue;
  font-size: 15pt;
  flex: 3;
  margin-left: 2em;
  text-align: center;
}
<div class="flex-container card-panel teal lighten-2">
  <div>
    <div class="flex-sub-container">
      <p class="flex-item-left-corner">Left Top</p>
      <p class="flex-item-right-corner">Right Top</p>
    </div>
  </div>
  <div>
    <div class="flex-sub-container2">
      <div class="flex-sub-item">
        <p class="flex-qty">7</p>
        <p class="flex-qty-label">Label</p>
      </div>
      <div class="flex-center">
        <p>This is my very long center text.</p>
      </div>
    </div>
  </div>
  <p class="flex-bottom-middle">Bottom Middle</p>
</div>

<div class="flex-container card-panel teal lighten-2">
  <div>
    <div class="flex-sub-container">
      <p class="flex-item-left-corner">Left Top</p>
      <p class="flex-item-right-corner">Right Top</p>
    </div>
  </div>
  <div>

    <div class="flex-sub-container2">

      <div class="flex-sub-item">
        <p class="flex-qty">7</p>
        <p class="flex-qty-label">Label</p>
      </div>
      <div class="flex-center">
        <p>This is my very long center text.</p>
      </div>
    </div>

  </div>
  <p class="flex-bottom-middle">Bottom Middle</p>
</div>

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2017-06-07
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多