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

如何修复移动端下美元符号图片叠在odometer计数器上方的布局问题

问题描述

现有两列表格布局,进行移动端响应式适配时,移动端视图下美元符号图片会显示在odometer计数器上方,需求为二者横向并排显示。
相关代码如下:

JS代码

setTimeout(function() {
         odometer.innerHTML = '1925'
     })

CSS代码

.fiftyFiftySection {
    background-color: #000;
  }
  .odometer {
    font-size: 3em;
    text-align: center;
    width: 180px;
  }
    table td{
      column-width: 1000px;
      text-align: center;
  }
  #dollarSign {
    height: 50px; 
    width: 30px;
    }
    #fiftyFiftySignImage {
      width:400px; 
      height:300px; 
      margin-left: -100px;
    }
  @media (max-width: 500px) {
    table td{
      column-width: 100px;
      text-align: left;
    }
    #dollarSign {
      /* uncomment out display when you want it to display */
      /* display: none; */
      width: 20px;
      height: 20px;
    }
    #currentEstimatedPayout {
      display: none;
    }
    #odometer {
      margin-right: 50px;
      margin-top: 20px;
    }
    #fiftyFiftySignImage {
      width:300px; 
      height:200px;
      margin-left: -50px;
    }
  }

HTML代码

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/odometer@0.4.8/themes/odometer-theme-train-station.css"> 
    <script src="https://cdn.jsdelivr.net/npm/odometer@0.4.8/odometer.min.js"></script>
<section class="fiftyFiftySection" id="fiftyFiftySection">
  <table>
    <tr>
      <th></th>
      <th></th> 
    </tr>
    <tr>
      <td>
        <img id="fiftyFiftySignImage" src="https://res.cloudinary.com/piersolutions/image/upload/v1637109327/5050_frfhsy.png">
      </td> 
      <td>
        <h4 id="currentEstimatedPayout" style="color: #ffffff;">Current Estimated Payout</h4>
        <!-- <br> -->
        <img id="dollarSign" src="https://res.cloudinary.com/piersolutions/image/upload/v1637361906/dollar-sign-2_a2hsh3.png" alt=""><div id="odometer" class="odometer">000000</div>
      </td>
    </tr>
  </table>
</section>
解决思路

问题的核心原因是#dollarSign是行内元素,#odometer是div块级元素,块级元素默认独占一行,所以会自动换行显示,移动端单元格宽度缩小后该问题更明显,原有代码里给#odometer设置的margin-top: 20px也会加剧错位。
可以通过以下两种方案解决:

  • 方案1:无需修改HTML结构,直接修改CSS属性,将两个元素设为行内块并居中对齐
    在移动端媒体查询中新增/修改如下样式:
@media (max-width: 500px) {
  /* 原有样式保留,新增以下内容 */
  #dollarSign {
    display: inline-block;
    vertical-align: middle; /* 调整对齐方式,可选top、bottom匹配需求 */
  }
  #odometer {
    display: inline-block;
    vertical-align: middle;
    width: 140px; /* 可根据实际情况缩小宽度避免挤不下换行 */
    font-size: 2em; /* 字号也可同步缩小适配移动端 */
    margin-top: 0; /* 移除原有导致错位的上边距 */
    margin-right: 0; /* 不需要右间距可直接移除 */
  }
}
  • 方案2:新增父容器用flex布局,稳定性更高
    先修改HTML,给美元符号和odometer套一层父容器:
<!-- 原有HTML的对应部分替换为以下内容 -->
<div class="payout-group">
  <img id="dollarSign" src="https://res.cloudinary.com/piersolutions/image/upload/v1637361906/dollar-sign-2_a2hsh3.png" alt="">
  <div id="odometer" class="odometer">000000</div>
</div>

再添加对应CSS:

/* 全局或媒体查询内添加均可 */
.payout-group {
  display: flex;
  align-items: center; /* 垂直居中对齐 */
  gap: 8px; /* 两个元素之间的间距,可自定义调整 */
}

两种方案都可以实现横向并排效果,flex布局的适配性更强,推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:15:04