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

解决倒计时动态数字导致页面布局偏移问题

倒计时数字变化导致布局移位的解决办法

问题背景

我正在开发一个小型倒计时项目,初始代码如下:

<div className={aboutPage ? styles['clock-container-aboutpage'] : styles['clock-container']}>
    <p className={styles['clock-container__p']}>
        <span>{years}</span> {years === 1 ? 'year, ' : 'years, '}
        <span>{months}</span> {months === 1 ? 'month, ' : 'months, '}
        <span>{days}</span> {days === 1 ? 'day' : 'days'}
    </p>
    <p className={styles['clock-container__p']}>
        <span className={timeSpaceFixCSS}>{padNum(hours)}</span>  {hours === 1 ? 'hour : ' : 'hours : '}
        <span className={timeSpaceFixCSS}>{padNum(minutes)}</span>  {minutes === 1 ? 'minute : ' : 'minutes : '}
        <span className={timeSpaceFixCSS}>{padNum(seconds)}</span> {seconds === 1 ? 'second' : 'seconds'}
    </p>
</div>

运行时发现,数字变化时因字符宽度差异会导致文本轻微移位,需要让数字固定位置不影响整体布局。

尝试过的方案

  • 使用等宽字体:能解决移位问题,但更换字体后效果失效
  • 固定宽度span包裹数字:网站为自适应布局,小屏字体缩小后固定宽度不再适配

最终解决方案

通过添加timeSpaceFixCSS类实现数字位置固定,修改后的HTML代码:

<div className={aboutPage ? styles['clock-container-aboutpage'] : styles['clock-container']}>
    <p className={styles['clock-container__p']}>
        <span className={timeSpaceFixCSS}>{years}</span> {years === 1 ? 'year, ' : 'years, '}
        <span className={timeSpaceFixCSS}>{months}</span> {months === 1 ? 'month, ' : 'months, '}
        <span className={timeSpaceFixCSS}>{days}</span> {days === 1 ? 'day' : 'days'}
    </p>
    <p className={styles['clock-container__p']}>
        <span className={timeSpaceFixCSS}>{padNum(hours)}</span>  {hours === 1 ? 'hour : ' : 'hours : '}
        <span className={timeSpaceFixCSS}>{padNum(minutes)}</span>  {minutes === 1 ? 'minute : ' : 'minutes : '}
        <span className={timeSpaceFixCSS}>{padNum(seconds)}</span> {seconds === 1 ? 'second' : 'seconds'}
    </p>
</div>

timeSpaceFixCSS的逻辑定义:

const timeSpaceFixCSS = aboutPage ? styles['time-space-fix-aboutpage'] : styles['time-space-fix']

对应的CSS样式:

.time-space-fix, .time-space-fix-aboutpage {
    display: inline-block;
    text-align: center;
    font-family: inherit;
    font-size: inherit;
}

.time-space-fix {
    width: 3.6rem;
}

@media (max-width: 1535px) {
    .clock-container {
        font-size: 2.5rem;
    }

    .time-space-fix {
        width: 3rem;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:21