目前知道的 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 这种奇葩机型,按比例写出来的页面肯定会崩溃的。
是不是我孤陋寡闻,其实还有一种完美解决自适应问题的方法呢。
1 horizon 2017-06-14 17:04:28 +08:00 垂直居中用 flex 啊。。为啥还要用百分比。。 |
![]() | 2 blackMountain OP @horizon 不是阿,写了一个 div,然后让 div 中的文字垂直居中,这个怎么用 flex 阿 |
![]() | 3 est 2017-06-14 17:08:35 +08:00 @blackMountain table 大法好 |
4 xss 2017-06-14 17:33:18 +08:00 不是非常懂前端 但是垂直居中这种需求我一般是 display: table 还是 table-cell 来着? |
5 horizon 2017-06-14 17:35:06 +08:00 |
![]() | 6 rabbbit 2017-06-14 17:49:34 +08:00 .div {display: flex;align-items: center;} 试试这个? |
![]() | 7 Biwood 2017-06-14 18:27:07 +08:00 div { display: table-cell; vertical-align: middle; } 或者 div { display: flex; align-items: center; } 都可以 |
8 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 方案等 |
![]() | 9 chairuosen 2017-06-14 19:09:47 +08:00 rem 方案啊 |
![]() | 10 dtw5t 2017-06-14 20:06:39 +08:00 flex+rem |
![]() | 11 blackMountain OP |
![]() | 12 meepo3927 2017-06-15 15:41:00 +08:00 有成熟方案的, 请搜 flexible.js |