移动浏览器中图片相对宽度为何显示为零?
数据小许
结论
从现有代码无法确定图片变成零宽度的具体原因。可以先检查两处可能影响移动端布局的设置:页面没有声明移动端 viewport;.fasciaSx 和 .fasciaDx 使用了 flex: 15% 和 flex: 85%,同时继承了 div { padding: 6px }。这些设置会影响 Flexbox 项目的实际尺寸。HTML 和 CSS 校验通过,只能说明语法符合校验规则,不能保证布局在不同视口下都符合预期。
先声明移动端 viewport
页面的 <head> 中没有 viewport 元标签。移动浏览器可能会使用较宽的布局视口排版,再缩放页面。可以先添加:
<meta name="viewport" content="width=device-width, initial-scale=1">
这能让布局视口匹配设备宽度,但未必能单独解决图片宽度为零的问题。
明确 Flexbox 列宽和图片尺寸
flex: 15% 和 flex: 85% 是 flex 简写写法,不代表固定列宽,项目仍会按照 Flexbox 规则伸缩。两个项目的基础比例合计为 100%,div 的 6px 内边距还会增加项目占用的空间。可以明确列宽、禁止左栏收缩,并用 box-sizing 统一尺寸计算:
* {
box-sizing: border-box;
}
.contenitore {
display: flex;
}
.fasciaSx {
flex: 0 0 15%;
min-width: 0;
}
.fasciaDx {
flex: 1 1 85%;
min-width: 0;
}
.fasciaSx img {
display: block;
width: 100%;
height: auto;
}
如果右侧内容在窄屏上挤占左栏空间,可以把小屏布局改为上下排列。具体断点应根据页面实际效果确定:
@media (max-width: 600px) {
.contenitore {
flex-direction: column;
}
.fasciaSx,
.fasciaDx {
flex: 0 0 auto;
width: 100%;
}
}
仍异常时的检查顺序
在开发者工具的移动端模拟视口中,查看 .fasciaSx 的计算宽度,以及图片的 naturalWidth 和 getBoundingClientRect().width。如果父级宽度正常、图片宽度为零,再确认移动设备能否加载 ../fritzing/ilReostatoEILedRuotato.png,并检查是否有其他媒体查询或样式覆盖图片宽度。现有材料没有提供完整页面环境或移动端计算样式,因此无法确认具体原因。
备注:内容仅供参考。
