h5 页面自适应,完美,弹

2017-06-14 17:00:46 +08:00
 blackMountain

目前知道的 h5 页的自适应方法有两种,但都不是很完美。

一种是快被被淘汰的:

<meta name="viewport" content="width=750,target-densitydpi=device-dpi,user-scalable=no"/>

这个的好处是所有元素都可以用 px 来规定宽高,因为页面会随着设备的尺寸自动缩放。 但是这种方法很坑,因为写出来的页面是固定比例的,在不同设备下页面比例之外的部分都是一片白色,非常难看。

第二种方法是现在最常用的:

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0,maximum-scale=1.0">

页面宽度等于设备宽度,高度 100%就好了。

这种方法的缺点在于,因为页面宽高不确定,页面里元素只能用百分比来规定尺寸。有些情况百分比不是那么方便: 比如要让 div 中的字体垂直居中,但是 div 高度是用百分比写的没办法用 line-height。 又比如 iphone5 这种奇葩机型,按比例写出来的页面肯定会崩溃的。

是不是我孤陋寡闻,其实还有一种完美解决自适应问题的方法呢。

4797 次点击
所在节点    前端开发
12 条回复
horizon
2017-06-14 17:04:28 +08:00
垂直居中用 flex 啊。。为啥还要用百分比。。
blackMountain
2017-06-14 17:05:46 +08:00
@horizon 不是阿,写了一个 div,然后让 div 中的文字垂直居中,这个怎么用 flex 阿
est
2017-06-14 17:08:35 +08:00
@blackMountain table 大法好
xss
2017-06-14 17:33:18 +08:00
不是非常懂前端
但是垂直居中这种需求我一般是
display: table
还是 table-cell 来着?
horizon
2017-06-14 17:35:06 +08:00
rabbbit
2017-06-14 17:49:34 +08:00
.div {display: flex;align-items: center;}
试试这个?
Biwood
2017-06-14 18:27:07 +08:00
div {
display: table-cell;
vertical-align: middle;
}

或者

div {
display: flex;
align-items: center;
}

都可以
lupkcd
2017-06-14 19:09:30 +08:00
来 大兄弟 试试这句代码 `<meta name="viewport" content="width=640,target-densitydpi=device-dpi,maximum-scale=1.0, user-scalable=no">`
还有各种 rem 方案等
chairuosen
2017-06-14 19:09:47 +08:00
rem 方案啊
dtw5t
2017-06-14 20:06:39 +08:00
flex+rem
blackMountain
2017-06-15 14:13:14 +08:00
@rabbbit @Biwood 恩,谢谢,学到了一种新的垂直居中方法,以前都用 line-height 等于元素的高
meepo3927
2017-06-15 15:41:00 +08:00
有成熟方案的, 请搜 flexible.js

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX