mPDF 8中容器与图片max-height百分比设置不生效问题
mPDF 8 百分比高度/max-height 不生效问题
问题成因

- 百分比高度缺少计算基准:mPDF 渲染逻辑比浏览器更严格,百分比
height/max-height必须从明确设置了高度的父元素继承计算基准,原代码中没有给html、body标签设置100%高度,.screenshot-container的百分比高度找不到参考值,直接被解析器忽略。 max-height属性兼容问题:mPDF 8 对块级元素的百分比值max-height支持存在已知缺陷,无法正确约束容器高度,设置后不会生效。- CSS注释语法错误:标准CSS只支持
/* 注释 */格式,原代码里用的//单行注释会导致mPDF的CSS解析器异常,相邻的后续样式规则可能失效。 - 内部图片的百分比高度同样因为父容器没有明确计算高度,无法生效。
修复方案
- 首先修正所有CSS注释,把
//格式的注释替换为标准/* */格式,避免样式解析错误。 - 给根元素设置明确高度,为子元素的百分比高度提供计算基准:
@page { margin-top: 14px !important; margin-bottom: 14px !important; margin-left: 20px !important; margin-right: 20px !important; } html, body { height: 100%; margin: 0; padding: 0; box-sizing: border-box; font-family: Sans-Serif !important; }
- 弃用不兼容的
max-height属性,直接给容器设置明确可计算的高度,内部图片用mPDF专属属性适配容器:
.section-header { height: 25px !important; line-height: 25px !important; font-size: 20px; margin: 0 0 7px 0 !important; padding: 0 !important; text-align: center; } .screenshot-container { width: 100%; /* 减去头部section-header占用的25px高度+7px下外边距,按需求取剩余空间的90%,mPDF 8支持基础calc运算 */ height: calc((100% - 32px) * 0.9); background-color: #f4f7fc; text-align: center; border: 1px solid red; overflow: hidden; } .screenshot-container img { width: 100%; height: 100%; /* mPDF专属属性,控制图片等比缩放适配容器,不变形、不溢出 */ -mpdf-image-fit: contain; }
- 如果你使用的mPDF小版本不支持
calc运算,可以直接用固定物理单位设置高度:A4页面高度为297mm,去掉上下边距共28mm、头部占用约8.5mm,剩余空间的90%约为234mm,直接给容器设height: 234mm;即可,固定单位在mPDF中渲染优先级最高,不会出现兼容问题。
内容的提问来源于stack exchange,提问作者Čamo
相关产品推荐
相关产品推荐

