为啥我的卡在 bootstrap 5 中没有正确对齐?

Posted

技术标签:

【中文标题】为啥我的卡在 bootstrap 5 中没有正确对齐?【英文标题】:Why aren't my cards aligning properly in bootstrap 5?为什么我的卡在 bootstrap 5 中没有正确对齐? 【发布时间】:2022-01-18 03:22:12 【问题描述】:

所以我一直在尝试使用准备好的语句以使我的 php 更安全。

我需要显示数据库表中的产品,并且不使用准备好的语句,卡片应按应有的方式对齐。

但是,通过一个准备好的声明,不知何故,我让卡片没有在正确的网格中对齐。

 <!doctype html>
<html lang="en">
   <head>
      <!-- Required meta tags -->
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <!-- Bootstrap CSS -->
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
      <title>Website Title</title>
      <?php 
         include 'navbar.php';
         include 'dbConnect.php';
         
         $results=$db->query("SELECT * FROM Stock");
         ?>
   </head>
   <body>
      <div class="container-xl">
         <div class="row">
            <div class="col">
               <p class="text-muted"> Home > viewStock.php </p>
               <h1 class="display-6">Shop
               </h1>
            </div>
         </div>
      </div>
      <div class="container-xl">
         <?php while($row=$results->fetch_array())
            
            ?>
         <form name="orderForm" method="post" action="viewProduct.php">
            <div class="col-sm-4">
               <div class="card" style="width: 18rem;">
                  <div class="card-body">
                     <h5 class="card-title">Stock No: <?php echo $row['stockID'] ?></h5>
                     <input type="hidden" name="stockID" value="<?php echo $row['stockID'] ?>">
                     <span class="card"><img class="img-fluid card-img-top" src="<?php echo $row['image'] ?>" ></span>
                     <ul class="list-group list-group-flush">
                        <li class="list-group-item">Description: <?php echo $row['category'] ?></li>
                        <li class="list-group-item">Quantity In Stock: <?php echo $row['qtyInStock'] ?></li>
                        <li class="list-group-item">Price: £<?php echo $row['price'] ?></li>
                     </ul>
                     <p align="center"><button type="submit" class="btn btn-primary">VIEW</button></p>
                  </div>
               </div>
            </div>
         </form>
         <?php  ?>
      </div>
      <!-- end row --> 
   </body>
   <!-- Footer-->
   <footer class="container-xl py-5 bg-light">
      <div class="container">
         <p class="m-0 text-center text-black">Copyright &copy; The Music Store 2021</p>
      </div>
   </footer>
</html>

【问题讨论】:

嗨詹姆斯。如果您有兴趣成为一名专业的 PHP 开发人员,我会建议您学习现代 PHP 吗?您处理此问题的方式已经过时,取而代之的是利用 API、javascript 和其他技术的新技术。现代架构将视图与数据分离。对你学习新技术有好处,但你走错了路。我建议你找到一个像 Drupal 这样的平台并了解它,然后你就可以开始你的职业生涯了。 【参考方案1】:

我看到了一些问题,我有一些建议。

您并不需要单独的容器来存放所有东西。除非我需要它们以不同的方式表现,否则我通常只有一个页面。 带有表单的容器缺少一行。每一列都应该在一行内。 在行和每列之间有一个表格。表单应该是列内容的一部分,而不是与布局网格混合。 您可能不想在卡片上设置固定宽度,因为每个卡片都有自己的一列。如果您只是使用一组独立流动的卡片,您可以这样做。

如果我们解决了这些问题,事情似乎会运作良好。这是您的代码以及我所做的更改。

<div class="container-xl">
  <div class="row">
    <?php while($row=$results->fetch_array())  ?>
    <div class="col-sm-4">
      <form name="orderForm" method="post" action="viewProduct.php">
        <div class="card">
          <div class="card-body">
            <h5 class="card-title">Stock No:
              <?php echo $row['stockID'] ?>
            </h5>
            
            <input type="hidden" name="stockID" value="<?php echo $row['stockID'] ?>">
       
            <span class="card">
                <img class="img-fluid card-img-top" src="<?php echo $row['image'] ?>" >
            </span>
                
            <ul class="list-group list-group-flush">
              <li class="list-group-item">Description:
                <?php echo $row['category'] ?>
              </li>
              <li class="list-group-item">Quantity In Stock:
                <?php echo $row['qtyInStock'] ?>
              </li>
              <li class="list-group-item">Price: £
                <?php echo $row['price'] ?>
              </li>
            </ul>
            
            <p align="center"><button type="submit" class="btn btn-primary">VIEW</button></p>
          </div>
        </div>
      </form>
    </div>
    <?php  ?>
  </div>
</div>

这是输出的模型。我已经在您的 HTML 中重复了这些列以进行演示。

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div class="container-xl">
  <div class="row">
    <div class="col-sm-4">
      <form name="orderForm" method="post" action="viewProduct.php">
        <div class="card">
          <div class="card-body">
            <h5 class="card-title">Stock No:
              <?php echo $row['stockID'] ?>
            </h5>
            <input type="hidden" name="stockID" value="<?php echo $row['stockID'] ?>">
            <span class="card"><img class="img-fluid card-img-top" src="<?php echo $row['image'] ?>" ></span>
            <ul class="list-group list-group-flush">
              <li class="list-group-item">Description:
                <?php echo $row['category'] ?>
              </li>
              <li class="list-group-item">Quantity In Stock:
                <?php echo $row['qtyInStock'] ?>
              </li>
              <li class="list-group-item">Price: £
                <?php echo $row['price'] ?>
              </li>
            </ul>
            <p align="center"><button type="submit" class="btn btn-primary">VIEW</button></p>
          </div>
        </div>
      </form>
    </div>
    
    <div class="col-sm-4">
      <form name="orderForm" method="post" action="viewProduct.php">
        <div class="card">
          <div class="card-body">
            <h5 class="card-title">Stock No:
              <?php echo $row['stockID'] ?>
            </h5>
            <input type="hidden" name="stockID" value="<?php echo $row['stockID'] ?>">
            <span class="card"><img class="img-fluid card-img-top" src="<?php echo $row['image'] ?>" ></span>
            <ul class="list-group list-group-flush">
              <li class="list-group-item">Description:
                <?php echo $row['category'] ?>
              </li>
              <li class="list-group-item">Quantity In Stock:
                <?php echo $row['qtyInStock'] ?>
              </li>
              <li class="list-group-item">Price: £
                <?php echo $row['price'] ?>
              </li>
            </ul>
            <p align="center"><button type="submit" class="btn btn-primary">VIEW</button></p>
          </div>
        </div>
      </form>
    </div>
    
    <div class="col-sm-4">
      <form name="orderForm" method="post" action="viewProduct.php">
        <div class="card">
          <div class="card-body">
            <h5 class="card-title">Stock No:
              <?php echo $row['stockID'] ?>
            </h5>
            <input type="hidden" name="stockID" value="<?php echo $row['stockID'] ?>">
            <span class="card"><img class="img-fluid card-img-top" src="<?php echo $row['image'] ?>" ></span>
            <ul class="list-group list-group-flush">
              <li class="list-group-item">Description:
                <?php echo $row['category'] ?>
              </li>
              <li class="list-group-item">Quantity In Stock:
                <?php echo $row['qtyInStock'] ?>
              </li>
              <li class="list-group-item">Price: £
                <?php echo $row['price'] ?>
              </li>
            </ul>
            <p align="center"><button type="submit" class="btn btn-primary">VIEW</button></p>
          </div>
        </div>
      </form>
    </div>
  </div>
</div>

【讨论】:

我已经用你修改的原始代码更新了答案。

以上是关于为啥我的卡在 bootstrap 5 中没有正确对齐?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET-MVC5 - 为啥 Bootstrap v4 主题不能正确显示组件?

为啥页脚没有归档全屏宽度 html/Bootstrap 5

为啥导航栏不会在 Bootstrap 5 中与右侧对齐?

AD20中原理图没有错 封装裤没有错 但是芯片为啥导入不了PCB里面呢?

为啥对 List<T> 的迭代没有从 SQL 视图中给我正确的值? [复制]

无法切换。 Bootstrap 5 js 未正确初始化?