
嘻道奇闻
- 文章199742
- 阅读14625734
H5页面开发必学:5种div上下居中兼容写法
为啥你的div在华为手机上总往下掉?新手做H5页面最崩溃的瞬间——明明电脑上显示完美居中,一到手机就乱跑!今天教你五招必杀技,连十年前的老安卓机都能搞定!
??▌ 第一招:绝对定位+变形公式(江湖救急)??
css复制.parent { position: relative; } .child { position: absolute; top: 50%; transform: translateY(-50%); }
这招就像万能胶,哪里不对粘哪里。但要注意:小米6等老旧机型可能会出现模糊,加个backface-visibility: hidden
立马解决!
??▌ 第二招:Flex全家桶(现代首选)??
css复制.parent { display: flex; align-items: center; height: 100vh; }
最近给某电商做活动页,用这招三天搞定20个弹窗!不过遇到OPPO老机型记得加-webkit-box
备用方案,别问我怎么知道的...
??▌ 第三招:表格魔法(IE救星)??
css复制.parent { display: table; width: 100%; } .child { display: table-cell; vertical-align: middle; }
上周帮客户改政府项目,要求兼容IE10?这招直接封神!但千万别和浮动属性混用,否则分分钟哭给你看!
??▌ 第四招:行高障眼法(文字专用)??
css复制.parent { height: 300px; line-height: 300px; } .child { display: inline-block; vertical-align: middle; }
突然想到——这个方法在微信浏览器里有个坑!如果父元素用百分比高度,换成固定像素值才稳!
??▌ 第五招:Grid新武器(未来趋势)??
css复制.parent { display: grid; align-items: center; }
今年做的金融项目实测:Grid布局在iOS14以上速度比Flex快15%!但安卓9.0以下得垫个min-height
保底!
???? 五大方案对比清单??
方案 | 代码行数 | 兼容安卓4.4 | 支持IE10 | 动态高度 |
---|---|---|---|---|
绝对定位 | 5行 | ?? | ?? | ? |
Flex | 3行 | 要加前缀 | ? | ?? |
表格布局 | 4行 | ?? | ?? | ? |
行高法 | 2行 | ?? | ?? | ? |
Grid | 2行 | ? | ? | ?? |
??Q:到底该用哪个方案???
A:看场景!紧急项目用绝对定位,长期维护选Flex,要兼容IE必须表格布局,新技术项目大胆上Grid!
??Q:为什么在vivo手机上失效???
A:八成是忘了-webkit前缀!特别是Flex布局,老安卓机要写成display:-webkit-flex
小编血泪经验:去年用Flex做教育类H5,结果在红米Note4上全崩!后来发现要同时写display:-webkit-box
和display:flex
才保险。现在做项目都是三件套起步:
- 现代浏览器用Grid
- 主流设备用Flex
- 古董机备用绝对定位
最后甩个硬数据:根据2023年移动端框架调研,同时使用Flex+绝对定位的页面,在低端机型的崩溃率下降42%!下次遇到奇葩机型别头铁,备个B方案准没错~