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

无媒体查询实现HTML CSS响应式时calc属性失效问题排查

问题根因

核心是calc()表达式存在语法错误:你代码中calc((480px — 100%) * 480)里的—是全角长破折号,并非CSS语法要求的标准半角ASCII减号-,导致整行width属性被浏览器直接忽略,你预设的宽度计算逻辑完全失效。

失效后纵向堆叠的原因

width属性被忽略后,你设置的min-width、max-width规则失去了判断基准,inline-block元素的宽度表现符合默认规则:
三个div没有内容填充的情况下,实际渲染宽度会占满父容器可用空间,因此始终纵向堆叠,达不到你预设的响应式效果。

修正方案

将所有calc表达式里的长破折号替换为标准半角减号即可,注意calc内的运算符前后必须保留空格,修正后的CSS代码如下:

.div1 {
  display: inline-block;
  min-width: 33%;
  max-width: 100%;
  width: calc((480px - 100%) * 480);
  background-color: blue;
  height: 100px;
}
.div2 {
  display: inline-block;
  min-width: 33%;
  max-width: 100%;
  width: calc((480px - 100%) * 480);
  background-color: green;
  height: 100px;
}
.div3 {
  display: inline-block;
  min-width: 33%;
  max-width: 100%;
  width: calc((480px - 100%) * 480);
  background-color: orange;
  height: 100px;
}

修正后即可达到预期效果:

  • 窗口宽度大于480px时,calc计算得到的width为负值,min-width: 33%生效,三个div各占1/3宽度横向排列
  • 窗口宽度小于480px时,calc计算得到的width为正值且超过100%,max-width: 100%生效,每个div占满整行纵向排列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:36:03