height 属性在 中非强制但必须显式设置,否则浏览器默认渲染为 150px(chrome/firefox)且不响应内容尺寸;单设 width 或 height 均导致比例失控,应成对设置 html width/height 属性,css 仅作补充。

height 属性在 <embed></embed> 中不是语法强制要求的,但不设通常会导致不可控的布局行为——浏览器会按默认值(多数为 150px)渲染,且无法响应式收缩或适配容器。
不写 height 时浏览器怎么处理
大多数浏览器对未声明 height 的 <embed></embed> 元素应用固定回退值(Chrome/Firefox 是 150px,Safari 可能略不同),这个值与内容实际尺寸无关。即使嵌入的是 SVG 或自适应视频,<embed></embed> 自身仍按该默认高占据空间。
- 无法通过 CSS
height: auto恢复内容自然高度(<embed></embed>不支持auto高度计算) - 父容器设置
display: flex或grid时,未设height容易触发意外拉伸或截断 - 在移动端 viewport 缩放后,固定默认高更显突兀
height 和 width 必须同时写吗
不必同时写,但强烈建议成对设置。只设 width 不设 height 会导致比例失控;只设 height 不设 width 同样不可靠——<embed></embed> 不具备 intrinsic ratio 推导能力。
- Flash、PDF、SVG 等不同
type的嵌入内容,宽高比差异大,单边约束无法保证显示完整 - CSS 中用
aspect-ratio无法替代 HTML 属性:部分旧浏览器不支持,且<embed></embed>对 CSSaspect-ratio的兼容性差(尤其 IE/Edge Legacy) - 若需响应式,优先用
width="100%" height="100%"+ 父容器明确尺寸,而非依赖百分比撑开
用 CSS 控制 height 还是 HTML 属性
HTML height 属性优先级高于 CSS,且部分环境(如某些邮件客户端、静态生成器)会忽略内联样式或外部 CSS,直接读取 HTML 属性。所以生产环境应以 HTML 属性为主,CSS 作补充或覆盖。
- 写法示例:
<embed src="chart.svg" width="600" height="400"></embed> - 若需动态控制,JavaScript 修改
element.height属性比改style.height更稳定(尤其对 PDF.js 等插件封装的嵌入) - 注意:CSS
max-height对<embed></embed>无效,object-fit也不生效——它不是替换元素(replaced element)的标准实现
真正麻烦的不是加不加 height,而是加了之后没验证内容是否被裁切、缩放是否失真、以及在 iframe fallback 场景下尺寸是否同步——这些往往要实测目标嵌入类型(PDF / SWF / SVG / WebAssembly 模块)才暴露出来。











