事情本身不复杂,线索都在日志里。移动端正文里嵌了联盟广告的 iframe,宽度写死 360px,在 320px 宽的设备上直接把页面撑出横向滚动条。用户左右晃动才能看全内容,GSC 的移动适配报告提示内容宽于视口,体验分被拉低。
第一反应是「外层容器没有设置溢出裁剪 子元素一超宽就撑开整页」,验证下来不成立。
原因不止一个,得分开看。iframe 用了固定宽度 没有跟随容器自适应。另一种情况是iframe 内部内容计算出的实际宽度大于声明宽度。
还有一种情况,响应式 meta 被模板重复输出 第二次的写法覆盖了第一次。
动手时先确认页面是否真的超出视口宽度
curl -s https://www.example.com/post/123 | grep -o 'width="[0-9]*"' | sort | uniq -c | head
然后让 iframe 按容器宽度自适应
iframe { width: 100%; max-width: 100%; border: 0; }
给外层容器加溢出裁剪
.ad-slot { overflow: hidden; max-width: 100vw; }
去掉重复的 viewport 声明
grep -c 'name="viewport"' /var/www/html/wp-content/themes/*/header.php
改完先别撤,确认这几项。改完横向滚动条消失,移动适配报告里的超宽提示清零,广告位的点击率没有受到影响。
第三方 iframe 的宽度不受自己控制,容器这一层一定要加裁剪和最大宽度,否则一个广告位能拖垮整页适配。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
