html5已移除,rows属性仅用于定义框架集行数与尺寸,支持像素、百分比和*(均分剩余空间),需配合使用且不可与共存。

rows 属性在现代开发中已不可用——HTML5 彻底移除了 <frameset></frameset> 和 <frame>,所有主流浏览器虽仍能解析,但会触发严格模式警告,且无法通过 W3C 验证。
如果你正在维护遗留系统或调试老项目,以下实操要点直接对应真实问题场景:
为什么 rows="25%,50%,25%" 有时高度不对
百分比计算基于 <frameset></frameset> 的父容器(即整个视口),但前提是页面不能有 。常见错误是保留了 标签,导致浏览器进入怪异模式,百分比失效。
- 必须删除全部
和标签,只保留+<frameset></frameset> - 避免在
<frameset></frameset>外写任何内容(包括注释、空格、换行) -
%值总和不必等于 100 —— 浏览器按比例缩放,rows="10%,20%,30%"和"1,2,3"效果一致
rows 中的 * 到底怎么算
* 不是“剩余 100% 减去前面”,而是“把所有 * 平均分给它们”。多个 * 会均分余量,不是只留一个。
-
rows="100,*,*":第一行 100px,剩下空间平分给第二、第三行 -
rows="*,*,*":三等分,等效于"33.33%,33.33%,33.34%" -
rows="200,*":第一行 200px,第二行占满其余全部高度
嵌套 <frameset></frameset> 时 rows 的作用域
每个 <frameset></frameset> 的 rows 只影响其直接子 <frame> 或嵌套的 <frameset></frameset>,不跨层传递尺寸。
- 外层
rows="30%,70%"→ 上半区放导航,下半区再用<frameset cols="20%,80%"></frameset>切列 - 内层
cols的百分比基于外层分配给它的那 70% 高度区域的宽度,而非整个窗口 - 嵌套过深易导致尺寸失控,建议不超过两层
替代方案比硬扛 rows 更实际
若你只是想实现「头部固定、内容滚动、底部吸附」这类布局,<frameset></frameset> 是最差选择:SEO 彻底失效、移动端无响应、无法用 JS 统一控制 history、无障碍支持为零。
- CSS Grid:
grid-template-rows: 60px 1fr 40px精确可控,支持响应式 - Flexbox:
flex-direction: column; flex: 1让中间区域自适应 - iframe 替代方案:用
<iframe src="header.html"></iframe>嵌入局部,但需注意同源策略和通信开销
rows,而是判断这个需求是否还值得用框架集——绝大多数情况,它只是历史包袱,不是解决方案。











