iOS 8.4及更早版本Safari不支持flex简写属性,需用-webkit-flex-grow/-shrink/-basis等前缀属性替代,并避免flex-wrap、gap等特性,推荐-webkit-box回退或@supports渐进增强。
flex属性在iOS 8.4及更早版本不生效
旧版iOS Safari(尤其是iOS 8.4及之前)对Flexbox的支持非常有限,
虽然能识别,但
简写属性(如
、
)会被完全忽略——布局直接塌陷成块级堆叠。
根本原因是WebKit旧内核未实现CSS Flexible Box Layout Module Level 1的完整语法解析,只支持带
前缀的早期草案属性。
必须用
替代
简写要拆成
、
、
和
也需加前缀:
、
避免使用
——iOS 11.2才开始支持,旧版无任何等效前缀方案
flex-direction和flex-wrap的兼容写法
旧版Safari对
支持尚可,但
在iOS 7–8中行为异常:设为
时子项可能溢出容器且不换行。
实操中更稳妥的做法是放弃
,改用
回退方案,或用媒体查询隔离旧设备。
立即学习
“
前端免费学习笔记(深入)
”;
→ 必须写
在iOS 8.1以下基本无效,建议用
或
模拟多行布局
若必须用Flex多行,可尝试
,但需配合
和
防止子项宽度计算错误
justify-content: center在iOS 7–8中偏移问题
即使加了
,主轴居中仍可能失效,常见于父容器未设固定宽度或含
时。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
本质是旧版WebKit对
的参考系判断有bug:它有时以
为基准,有时又按
算,导致视觉偏移。
父容器必须显式声明
或
,不能依赖
自适应
避免在Flex容器上同时用
和
,改用
控制子项间距
更可靠的方式是用
(对应
)替代
不要依赖autoprefixer自动补全
autoprefixer默认目标浏览器列表(如
)已不覆盖iOS 8,即使配置
,它也不会为
简写生成
等拆分属性——因为规范里没定义这种映射关系。
这意味着你写的
,autoprefixer只会加
,而旧版Safari根本不认识这个值。
手动补全必须写全三个属性:
、
、
用PostCSS插件
可缓解部分问题,但它不处理
简写降级
真机测试不可省:Simulator里的iOS 8.4和真实iPhone 5s表现仍有差异,尤其涉及
单位与Flex嵌套时
旧版iOS Flex布局的坑不在语法层面,而在渲染引擎对“弹性”二字的理解偏差——它把flex当作一种样式开关,而不是布局模型。所以最保险的姿势不是堆前缀,而是提前判断设备能力,用
做渐进增强,而不是无脑覆盖。
display: flexflexflex: 1flex: 0 0 auto-webkit-display: -webkit-flexdisplay: flexflex-webkit-flex-grow-webkit-flex-shrink-webkit-flex-basisjustify-contentalign-items-webkit-justify-content-webkit-align-itemsgapflex-directionflex-wrapwrapflex-wrapdisplay: -webkit-boxflex-direction: column-webkit-flex-direction: columnflex-wrap: wrapfloatinline-block-webkit-flex-wrap: wrapmax-widthbox-sizing: border-box-webkit-justify-content: centerpaddingjustify-contentcontent-boxborder-boxwidthmax-width100%paddingjustify-content: centermargin-webkit-box-pack: centerdisplay: -webkit-boxlast 2 versionsios_saf >= 8flex-webkit-flex-growflex: 1-webkit-flex: 1-webkit-flex-grow: 1-webkit-flex-shrink: 1-webkit-flex-basis: 0%postcss-flexbugs-fixesflexvh@supports (display: -webkit-flex)