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

如何实现滚动时H1文本垂直上移且字号从300px变50px?[HTML,CSS,JS]

解决方案

要实现滚动时H1文本同时缩放和垂直上移,只需在现有代码基础上添加位移计算逻辑即可,具体修改如下:

1. 修改JavaScript代码

在滚动事件监听中,除了计算字号变化,增加垂直位移的计算逻辑。我们使用transform: translateY()实现位移(相比直接修改top属性性能更优):

const text = document.querySelector('h1');

window.addEventListener('scroll', () => {
    const current = window.scrollY;
    const maxFontSize = 300;
    const minFontSize = 50;
    // 计算字号:确保不小于最小值
    const fontSize = Math.max(minFontSize, maxFontSize - current);
    text.style.fontSize = `${fontSize}px`;

    // 配置位移参数:可根据需求调整最大上移距离
    const maxUpwardMove = -200; // 向上最多移动200px,负数表示向上
    const scrollThreshold = maxFontSize - minFontSize; // 触发变化的最大滚动距离(250px)
    
    // 计算当前位移:滚动距离未超过阈值时,随滚动逐渐上移;超过阈值后保持最大位移
    const translateY = Math.max(maxUpwardMove, 0 - (current * Math.abs(maxUpwardMove) / scrollThreshold));
    text.style.transform = `translateY(${translateY}px)`;
});

2. 可选:优化CSS(添加平滑过渡)

如果希望动画更自然,可以给H1添加过渡效果,让字号和位移变化更平滑:

h1 {
    font-size: 300px;
    transition: all 0.1s ease-out; /* 添加过渡动画 */
}

逻辑说明

  • 字号逻辑:保持原有逻辑,滚动时从300px逐步缩小到50px,之后不再变化
  • 位移逻辑:根据滚动距离同步计算上移距离,当滚动到250px(字号达到最小值)时,H1向上移动到最大距离(200px),之后保持该位置
  • 性能优化:使用transform而非top属性,避免触发页面重排,提升滚动流畅度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:13:40