You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PHP大量查询结果展示代码添加水平滚动条?

给PHP查询结果添加水平滚动条的解决方案

嘿,我帮你搞定这个水平滚动条的问题!你之前用div出现空白,大概率是Bootstrap栅格的默认布局和滚动容器的样式没配合好,下面给你两种实用的解决方案,不用改太多PHP逻辑就能搞定:

方法一:借助Bootstrap Flex布局实现

这种方法利用Bootstrap的flex类,让卡片横向排列且不换行,配合外层容器的滚动属性,既符合Bootstrap的生态,又能避免空白问题:

完整代码示例

<?php 
global $row2; 
$query2= "select title,created_at, featured_image, description from news_portal.posts where featured= '1' ; "; 
$query_result2=mysqli_query($conn2 ,$query2) or die(mysqli_error($conn2)); 
?>
<!-- 外层滚动容器,负责提供水平滚动 -->
<div class="horizontal-scroll-container">
  <!-- Bootstrap flex容器,设置不换行 -->
  <div class="d-flex flex-nowrap">
    <?php while($row2= mysqli_fetch_array($query_result2)) { ?> 
    <!-- flex-shrink-0 防止卡片被压缩变形 -->
    <div class="col-md-3 col-sm-6 flex-shrink-0 me-3">
      <!-- 这里放置你的内容 -->
      <h5 class="card-title"><?php echo htmlspecialchars($row2['title']); ?></h5>
      <img src="<?php echo htmlspecialchars($row2['featured_image']); ?>" alt="Featured Image" class="img-fluid mb-2">
      <p class="card-text"><?php echo htmlspecialchars($row2['description']); ?></p>
      <small class="text-muted"><?php echo htmlspecialchars($row2['created_at']); ?></small>
    </div>
    <?php } ?>
  </div>
</div>

配套CSS

.horizontal-scroll-container {
  overflow-x: auto;
  padding-bottom: 1rem; /* 给滚动条预留空间,避免遮挡内容 */
}

/* 可选:美化滚动条样式 */
.horizontal-scroll-container::-webkit-scrollbar {
  height: 6px;
}
.horizontal-scroll-container::-webkit-scrollbar-thumb {
  background-color: #888;
  border-radius: 3px;
}
.horizontal-scroll-container::-webkit-scrollbar-thumb:hover {
  background-color: #555;
}

方法二:用Inline-block布局实现

如果不想依赖Bootstrap的flex类,这种纯CSS的inline-block方式也能实现同样效果:

完整代码示例

<?php 
global $row2; 
$query2= "select title,created_at, featured_image, description from news_portal.posts where featured= '1' ; "; 
$query_result2=mysqli_query($conn2 ,$query2) or die(mysqli_error($conn2)); 
?>
<div class="horizontal-scroll-container">
  <?php while($row2= mysqli_fetch_array($query_result2)) { ?> 
  <div class="col-md-3 col-sm-6 scroll-card">
    <!-- 内容同上 -->
    <h5 class="card-title"><?php echo htmlspecialchars($row2['title']); ?></h5>
    <img src="<?php echo htmlspecialchars($row2['featured_image']); ?>" alt="Featured Image" class="img-fluid mb-2">
    <p class="card-text"><?php echo htmlspecialchars($row2['description']); ?></p>
    <small class="text-muted"><?php echo htmlspecialchars($row2['created_at']); ?></small>
  </div>
  <?php } ?>
</div>

配套CSS

.horizontal-scroll-container {
  overflow-x: auto;
  white-space: nowrap; /* 强制内部卡片不换行 */
  padding-bottom: 1rem;
}

.scroll-card {
  display: inline-block;
  vertical-align: top; /* 让所有卡片顶部对齐 */
  white-space: normal; /* 恢复卡片内部文本的正常换行 */
  margin-right: 1rem; /* 给卡片之间添加间距 */
}

为什么之前会出现空白?

你之前的实现可能没处理好内部元素的换行规则:Bootstrap的col-*类默认是块级元素,会自动换行,加上滚动容器的样式没约束住,就容易出现空白区域。上面两种方法都强制了卡片横向排列,同时通过padding给滚动条预留空间,完美解决空白问题。

内容的提问来源于stack exchange,提问作者umang yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:35:36