【问题标题】:How to stack flex box in responsive如何在响应式中堆叠弹性框
【发布时间】:2022-02-16 00:53:26
【问题描述】:

我仍在学习 CSS、html 和响应式设计的概念。有人可以帮我将这些框堆叠为响应行而不是列。请看下面的代码。

.row {
  display: flex;
  /* equal height of the children */
}

.col1 {
  flex: 1;
  /* additionally, equal width */
  border: 1px solid #dadada;
  margin: 0 40px 0 0;
  padding: 0 0 10px 0;
}

.col2 {
  flex: 1;
  /* additionally, equal width */
  border: 1px solid #dadada;
  padding: 0 0 10px 0;
}

.card-header {
  background: rgba(242, 242, 242, 1);
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  padding: 31px 10px 31px 15px;
}

.card-header-bg {
  height: 7px;
}

.card-container {
  padding: 2px 14px;
}

.blue-button,
a.blue-button {
  background-color: #026fc2;
  border-radius: 99rem;
  box-shadow: inset 0 0 0 1px #454545;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  padding: 0.5rem 1rem;
  text-align: center;
  display: inline-block;
}
<div class="row">
  <div class="col1">
    <div class="card-header-bg" style=" background-color: rgba(255, 181, 119, 1);"></div>

    <div class="card-header">Header</div>

    <div class="card-container">
      <p>Test Example</p>

      <ul>
        <li>test1</li>

        <li>test2</li>

        <li>test3</li>

        <li>test4</li>
      </ul>

      <p>Minor updates.</p>

      <ul>
        <li>test</li>

        <li>Test</li>
      </ul>

      <p><a href=".html" class="blue-button" role="button" style=" float: right; margin-bottom: 30px;">Go Here</a></p>
    </div>
  </div>

  <div class="col2">
    <div class="card-header-bg" style=" background-color: #7ECEFD;"></div>

    <div class="card-header">Header</div>

    <div class="card-container">
      <p>test123/p>

        <ul>
          <li>abc</li>

          <li>def</li>

          <li>ghi</li>
        </ul>

        <p>test test test.</p>

        <ul>
          <li>Learn about testing</li>
        </ul>

        <p><a href="" class="blue-button" role="button" style=" float: right; margin-bottom: 30px;">Second Test</a></p>
    </div>
  </div>
</div>

【问题讨论】:

  • 它们对我来说已经显示为行了。你想让它们一个一个叠起来吗?

标签: html css flexbox


【解决方案1】:

删除col1 上的margin 并在您的row 上使用flex-direction: column;

.row {
  display: flex;
  flex-direction: row;
  /* equal height of the children */
}

@media only screen and (max-width: 600px) {
  .row {  
    flex-direction: column;
  }
  .col1 {
    margin: 0px !important;
  }
}

.col1 {
  flex: 1;
  /* additionally, equal width */
  border: 1px solid #dadada;
  margin: 0 40px 0 0;
  padding: 0 0 10px 0;
}

.col2 {
  flex: 1;
  /* additionally, equal width */
  border: 1px solid #dadada;
  padding: 0 0 10px 0;
}


.card-header {
  background: rgba(242, 242, 242, 1);
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  padding: 31px 10px 31px 15px;
}

.card-header-bg {
  height: 7px;
}

.card-container {
  padding: 2px 14px;
}

.blue-button,
a.blue-button {
  background-color: #026fc2;
  border-radius: 99rem;
  box-shadow: inset 0 0 0 1px #454545;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  padding: 0.5rem 1rem;
  text-align: center;
  display: inline-block;
}
<div class="row">
  <div class="col1">
    <div class="card-header-bg" style=" background-color: rgba(255, 181, 119, 1);"></div>

    <div class="card-header">Header</div>

    <div class="card-container">
      <p>Test Example</p>

      <ul>
        <li>test1</li>

        <li>test2</li>

        <li>test3</li>

        <li>test4</li>
      </ul>

      <p>Minor updates.</p>

      <ul>
        <li>test</li>

        <li>Test</li>
      </ul>

      <p><a href=".html" class="blue-button" role="button" style=" float: right; margin-bottom: 30px;">Go Here</a></p>
    </div>
  </div>

  <div class="col2">
    <div class="card-header-bg" style=" background-color: #7ECEFD;"></div>

    <div class="card-header">Header</div>

    <div class="card-container">
      <p>test123</p>

        <ul>
          <li>abc</li>

          <li>def</li>

          <li>ghi</li>
        </ul>

        <p>test test test.</p>

        <ul>
          <li>Learn about testing</li>
        </ul>

        <p><a href="" class="blue-button" role="button" style=" float: right; margin-bottom: 30px;">Second Test</a></p>
    </div>
  </div>
</div>

编辑~flex-direction: row;gap 的图像。类似于您最初设置的边距。

编辑 ~ 添加media-query 以在调整大小时拥有 div 的堆栈。此外,将margin 放回 IE 上的行/桌面视图,但在 div 堆栈后删除边距。

@media only screen and (max-width: 600px) {
  .row {  
    flex-direction: column;
  }
  .col1 {
    margin: 0px !important;
  }
}

【讨论】:

  • 谢谢。但是,我需要边距,因为我仍然希望将框作为桌面视图中的列,中间有间隙。我尝试使用“gap 属性”,但它在 IE 上不起作用。所以最终使用了保证金。我希望它们仅在响应式视图中堆叠为行(可能小于 600 像素)。
  • @Superman 没问题!您不需要边距,只需在.row 上设置gap 这将可以使用flex-direction ~ row 或column,以分隔两个div。查看修改。
  • @Superman 见media-query 我设置了当调整大小时div 的堆栈正好在600px
  • 谢谢。我试过你说的,它在chrome浏览器上运行良好。但是,gap 在 IE 上不起作用。这就是为什么我更早地使用了保证金。有没有解决办法?
  • 非常感谢カメロン。这工作!!!!
猜你喜欢
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2017-12-06
  • 2013-04-26
  • 2019-09-28
相关资源
最近更新 更多