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

固定宽高父div下h3字体随父容器自动缩放的实现方案

固定宽高父容器下h3字号自适应解决方案

方案一:纯CSS容器查询方案(优先推荐)

现代浏览器支持容器查询特性,可以实现完全脱离视口尺寸、仅绑定父容器尺寸的字号自适应效果,实现简单性能优异。

修改样式如下:

  1. 给h3的直接父容器添加容器声明:
.book_div_data {
  padding-top: 3rem;
  /* 新增:声明为内联尺寸容器,子元素可使用容器相对单位 */
  container-type: inline-size;
  container-name: bookTitleContainer;
}
  1. 修改h3的字号规则:
.book_div_title {
  text-align: center;
  word-break: break-all;
  /* 新增:字号自适应规则 
  * clamp参数依次为最小字号、自适应规则、最大字号
  * min(15cqw, 10cqh) 表示同时取容器宽度15%、容器高度10%的最小值,避免宽高任意方向溢出
  * 数值可根据实际展示效果自行调整
  */
  font-size: clamp(1rem, min(15cqw, 10cqh), 3rem);
}

该方案支持Chrome 105+、Firefox 110+、Safari 16+,覆盖95%以上全球用户,优先选用。

方案二:JS兼容方案

如果需要兼容更低版本浏览器,可以通过JS动态计算适配字号:

JS逻辑代码:

// 字号调整函数
function adjustTitleFontSize() {
  const titleEl = document.getElementById('bookdivtitle');
  const parentEl = titleEl.parentElement;
  const maxFontSize = 48; // 对应3rem(根字号16px场景)
  const minFontSize = 16; // 对应1rem
  let currentSize = maxFontSize;
  titleEl.style.fontSize = `${currentSize}px`;
  // 逐步缩小字号直到内容不溢出父容器
  while (currentSize > minFontSize && (titleEl.scrollHeight > parentEl.clientHeight || titleEl.scrollWidth > parentEl.clientWidth)) {
    currentSize -= 1;
    titleEl.style.fontSize = `${currentSize}px`;
  }
}

// React场景下调用示例,在title和series变化时触发重计算
useEffect(() => {
  adjustTitleFontSize();
}, [title, series]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:18:04