【问题标题】:How to give spacing between elements inside a row如何在行内的元素之间给出间距
【发布时间】:2021-02-20 17:05:44
【问题描述】:

我有一个 Angular 10 项目,我必须连续对齐 3 张卡片,到目前为止它们水平对齐成一排,但我必须给它们一些间距 strong> 到目前为止还没有那么好用。

我尝试使用引导程序的偏移变量并手动为它们提供边距和填充,但仍然没有运气。在手机中,它可以很好地使用间距,而不是在桌面上。这是我的代码,有人可以查看它并指出我的错误吗?

到目前为止我尝试了什么:

  1. 手动设置边距和填充 -> 无效 全部。
  2. 使用引导程序的偏移变量 -> 没有变化。
  3. 使用 flex 参数 -> 也没有变化

卡片组件.html

<section>

  <div class="row ">

    <div class="col-xl-4 col-md-4 my-4 ">

      <mdb-card cascade="true" class="cascading-admin-card">

        <div class="admin-up">
          <mdb-icon fas icon="money-bill-alt" class="primary-color"></mdb-icon>
          <div class="data">
            <p>SALES</p>
            <h4><strong>$2000</strong></h4>
          </div>
        </div>

        <mdb-card-body [cascade]="true">
          <div class="progress">
            <div class="progress-bar bg-primary" role="progressbar" style="width: 25%" aria-valuenow="25"
                 aria-valuemin="0" aria-valuemax="100"></div>
          </div>
          <p class="card-text">Better than last week (25%)</p>
        </mdb-card-body>

      </mdb-card>

    </div>
 
  </div>


</section>

我的这个组件的 scss:

.cascading-admin-card {
  margin-top: 20px;
  float: left;
  width:18rem;

}
.cascading-admin-card .admin-up {
  margin-left: 4%;
  margin-right: 4%;
  margin-top: -20px;
  padding-top: 5px;
}
.cascading-admin-card .admin-up mdb-icon {
  padding: 1.7rem;
  font-size: 2rem;
  color: #fff;
  text-align: left;
  margin-right: 1rem;
  border-radius: 3px;
  box-shadow: 0 2px 9px 0 rgba(0,0,0,.2),0 2px 13px 0 rgba(0,0,0,.19); }
.cascading-admin-card .admin-up .data {
  float: right;
  margin-top: 2rem;
  text-align: right; }
.cascading-admin-card .admin-up .data p {
  color: #999999;
  font-size: 12px; }

.classic-admin-card .card-body {
  color: #fff;
  margin-bottom: 0;
  padding: 0.9rem; }
.classic-admin-card .card-body p {
  font-size: 13px;
  opacity: 0.7;
  margin-bottom: 0; }
.classic-admin-card .card-body h4 {
  margin-top: 10px; }
.classic-admin-card .card-body .float-right .fa {
  font-size: 3rem;
  opacity: 0.5; }

.classic-admin-card .progress {
  margin: 0;
  opacity: 0.7; }


.cascading-admin-card .admin-up .fa {
  -webkit-box-shadow: 0 2px 9px 0 rgba(0, 0, 0, 0.2), 0 2px 13px 0 rgba(0, 0, 0, 0.19);
  box-shadow: 0 2px 9px 0 rgba(0, 0, 0, 0.2), 0 2px 13px 0 rgba(0, 0, 0, 0.19);
}

以及我使用此元素的主仪表板:

<div class="main-content justify-content-center" style="padding-top: 50px; align-content: center">
  <div class="container">
    <div class="row row-cols-12 row-cols-md-3">
      <div class="col mb-4">
        <moniesta-client-card-info></moniesta-client-card-info>
      </div>
      <div class="col mb-4">
        <moniesta-client-card-info></moniesta-client-card-info>
      </div>
      <div class="col mb-4">
        <moniesta-client-card-info></moniesta-client-card-info>
      </div>
    </div>


  </div>
</div>

【问题讨论】:

    标签: html css angular twitter-bootstrap bootstrap-4


    【解决方案1】:

    您的问题需要改进。
    只要您的问题涉及 CSS 或 HTML 问题,请尝试以 HTML 的形式提供编译后的预期结果,而不使用您的角度格式。

    我不知道你的角度组件是如何作用的。所以我可能在下面的解释中犯了一些错误。不过,我建议您了解bootstrap cards 是如何构建的。
    这是一个在卡片中包含页眉、正文和页脚的示例:

    <div class="card text-center">
      <div class="card-header">
        My header
      </div>
      <div class="card-body">
        <h5 class="card-title">A title in the body</h5>
        <p class="card-text">A card text</p>
      </div>
      <div class="card-footer text-muted">
        A text in footer which is muted
      </div>
    </div>
    

    然后在您的row 组件中,您有3 个col 元素,您可以在其中绑定您的卡片。您可以考虑将 mb-4 类移动到 row 包装器,并将其从您的 cols 中删除。

    那么在你的卡片组件中,我认为你规则太多,可以考虑澄清一下。看看我下面的解释。我制作的第一张卡片与其他两张卡片略有不同,让您了解如何实现 bootstrap card。

    使用内置的 stackoverflow js/html/css sn-p 查看您的代码

    .cascading-admin-card {
      margin-top: 20px;
      float: left;
      width:18rem;
    
    }
    .cascading-admin-card .admin-up {
      margin-left: 4%;
      margin-right: 4%;
      margin-top: -20px;
      padding-top: 5px;
    }
    .cascading-admin-card .admin-up mdb-icon {
      padding: 1.7rem;
      font-size: 2rem;
      color: #fff;
      text-align: left;
      margin-right: 1rem;
      border-radius: 3px;
      box-shadow: 0 2px 9px 0 rgba(0,0,0,.2),0 2px 13px 0 rgba(0,0,0,.19); }
    .cascading-admin-card .admin-up .data {
      float: right;
      margin-top: 2rem;
      text-align: right; }
    .cascading-admin-card .admin-up .data p {
      color: #999999;
      font-size: 12px; }
    
    .classic-admin-card .card-body {
      color: #fff;
      margin-bottom: 0;
      padding: 0.9rem; }
    .classic-admin-card .card-body p {
      font-size: 13px;
      opacity: 0.7;
      margin-bottom: 0; }
    .classic-admin-card .card-body h4 {
      margin-top: 10px; }
    .classic-admin-card .card-body .float-right .fa {
      font-size: 3rem;
      opacity: 0.5; }
    
    .classic-admin-card .progress {
      margin: 0;
      opacity: 0.7; }
    
    
    .cascading-admin-card .admin-up .fa {
      -webkit-box-shadow: 0 2px 9px 0 rgba(0, 0, 0, 0.2), 0 2px 13px 0 rgba(0, 0, 0, 0.19);
      box-shadow: 0 2px 9px 0 rgba(0, 0, 0, 0.2), 0 2px 13px 0 rgba(0, 0, 0, 0.19);
    }
    <html>
    <head>
        <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet"/>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"/>
    </head>
    <body>
    <div class="main-content justify-content-center" style="padding-top: 15px; align-content: center">
      <div class="container">
        <div class="row">
          <div class="col">
                  
              <div class="card cascading-admin-card">
                <div class="card-header">
                  <i class="fas fa-money-bill-alt primary-color"></i>
                  SALES
                </div>
                <div class="card-body">
                  <h5 class="card-title">$2000</h5>
                  <div class="progress">
                    <div class="progress-bar bg-primary" role="progressbar" style="width: 25%" aria-valuenow="25"
                         aria-valuemin="0" aria-valuemax="100"></div>
                  </div>
                </div>
                <div class="card-footer text-muted">
                  Better than last week (25%)
                </div>
              </div>
            
          </div>
          <div class="col">
            <div class="card cascading-admin-card">
                <div class="admin-up">
                  <i class="fas fa-money-bill-alt primary-color"></i>
                  <div class="data">
                    <p>SALES</p>
                    <h4><strong>$2000</strong></h4>
                  </div>
                </div>
                <div class="card-body">
                  <div class="progress">
                    <div class="progress-bar bg-primary" role="progressbar" style="width: 25%" aria-valuenow="25"
                         aria-valuemin="0" aria-valuemax="100"></div>
                  </div>
                  <p class="card-text">Better than last week (25%)</p>
                </div>
              </div>
          </div>
          <div class="col">
            <div class="card cascading-admin-card">
                <div class="admin-up">
                  <i class="fas fa-money-bill-alt primary-color"></i>
                  <div class="data">
                    <p>SALES</p>
                    <h4><strong>$2000</strong></h4>
                  </div>
                </div>
                <div class="card-body">
                  <div class="progress">
                    <div class="progress-bar bg-primary" role="progressbar" style="width: 25%" aria-valuenow="25"
                         aria-valuemin="0" aria-valuemax="100"></div>
                  </div>
                  <p class="card-text">Better than last week (25%)</p>
                </div>
              </div>
          </div>
        </div>
      </div>
    </div>
    </body>
    </html>

    【讨论】:

    • 嗨,我尝试将 mb 移动到行,但它根本没有任何效果。我用 flexbox 解决了我的问题,但现在它不再在移动设备上工作了,响应性消失了。
    • 你能提供一张图片看看你得到了什么吗?然后,引导程序在col 上有一些offset classes,它可能是您的解决方案。其他的,你可以玩margin utilities。
    • 嘿,我这样做是为了回答
    【解决方案2】:

    这是我在代码 flex 中得到的图像:

    这是手机:

    我想首先在桌面上实现两件事我希望卡片接下来开始,侧边栏有一点空间。 并且反应灵敏

    我的代码如下所示:

    <div class="main-content " style="padding-top: 50px; align-content: center">
      <div class="container">
    
        <div class="d-inline-flex">
          <section class="col-4">
          <div >
            <moniesta-client-card-info></moniesta-client-card-info>
          </div>
          </section>
          <section class="col-4">
            <div >
            <moniesta-client-card-info></moniesta-client-card-info>
          </div>
          </section>
          <section class="col-4">
            <div >
            <moniesta-client-card-info></moniesta-client-card-info>
          </div>
          </section>
           </div>
      </div>
    
    </div>
    

    【讨论】:

    • 我想我不太明白你的问题。如果您希望导航栏和卡片内容之间的空间更小,请将您的内联样式:padding-top: 50px; 修改为小于 50px 的值。那么你想让你的卡片在手机上垂直显示,在大屏幕上水平显示?如果是,请查看我的回复。
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2017-08-20
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多