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

前端如何实现作为背景的文本随窗口大小自适应缩放

解决方案

完全不需要使用JavaScript监听resize事件,纯CSS即可实现需求,性能远高于JS方案,可选两种实现方式:

方案1:动态计算拉伸比例(自适应所有窗口尺寸)

直接通过CSS calc() 函数动态计算scaleY的数值,浏览器会自动响应窗口尺寸变化,无额外性能开销:

.bg_home {
  color: var(--main-bg-color);
  position: absolute;
  /* 原固定top的350px建议替换为视窗单位,比如结合你棕色区域的位置调整为以下示例,按需修改系数即可 */
  top: calc(35vh + 20px);
  left: 10px;
  -webkit-text-stroke: 1px var(--text-stoke);
  z-index: -1;
  /* 0.0014为调试系数,你可以根据需要覆盖的棕色区域高度调整这个数值,直到符合预期 */
  transform: scale(1, calc(0.0014 * 100vw));
  font-size: 42vw;
  will-change: transform;
  user-select: none;
}

如果需要结合窗口高度调整,也可以把calc内的逻辑改成和vh相关的计算,比如:
transform: scale(1, calc(40vh / (42vw * 0.72)));
其中0.72是你使用的字体下HOME四个字母的默认宽高比,可根据实际字体调整。

方案2:媒体查询固定断点(和你原有JS逻辑一致)

如果不需要全尺寸自适应,只需要你设定的几个宽度断点,直接用CSS媒体查询实现即可,替换你原有JS的逻辑:

.bg_home {
  color: var(--main-bg-color);
  position: absolute;
  top: 350px;
  left: 10px;
  -webkit-text-stroke: 1px var(--text-stoke);
  z-index: -1;
  font-size: 42vw;
  will-change: transform;
  user-select: none;
}

/* 窗口宽度小于等于1100px */
@media (max-width: 1100px) {
  .bg_home {
    transform: scale(1, 1.9999999);
  }
}
/* 窗口宽度1101px到1300px区间 */
@media (min-width: 1101px) and (max-width: 1300px) {
  .bg_home {
    transform: scale(1, 1.9);
  }
}
/* 窗口宽度大于1300px */
@media (min-width: 1301px) {
  .bg_home {
    transform: scale(1, 1.2);
  }
}

原有代码问题说明

你之前写的JS逻辑存在判断顺序错误:先判断window.innerWidth <=1300,再判断<=1100,会导致宽度小于等于1100时永远命中第一个条件,第二个判断不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:54:03