HTML5技术

解惑好文:移动端H5页面高清多屏适配方案 - Wshenawo21(2)

字号+ 作者:H5之家 来源:H5之家 2016-07-28 18:00 我要评论( )

上图中,对于一条1px宽的直线,它们在屏幕上的物理尺寸(灰色区域)的确是相同的,不同的其实是屏幕上最小的物理显示单元,即物理像素,所以对于一条直线,iphone5它能显示的最小宽度其实是图中的红线圈出来的灰色区

上图中,对于一条1px宽的直线,它们在屏幕上的物理尺寸(灰色区域)的确是相同的,不同的其实是屏幕上最小的物理显示单元,即物理像素,所以对于一条直线,iphone5它能显示的最小宽度其实是图中的红线圈出来的灰色区域,用css来表示,理论上说是0.5px。

所以,设计师想要的retina下border: 1px;,其实就是1物理像素宽,对于css而言,可以认为是border: 0.5px;,这是retina下(dpr=2)下能显示的最小单位。

然而,无奈并不是所有手机浏览器都能识别border: 0.5px;,ios7以下,android等其他系统里,0.5px会被当成为0px处理,那么如何实现这0.5px呢?

最简单的一个做法就是这样(元素scale):

.scale{     position: relative; } .scale:after{     content:"";     position: absolute;     bottom:0px;     left:0px;     right:0px;     border-bottom:1px solid #ddd;     -webkit-transform:scaleY(.5);     -webkit-transform-origin:0 0; }

我们照常写border-bottom: 1px solid #ddd;,然后通过transform: scaleY(.5)缩小0.5倍来达到0.5px的效果,但是这样hack实在是不够通用(如:圆角等),写起来也麻烦。

当然还有其他好多hack方法,网上都可以搜索到,但是各有利弊,这里比较推荐的还是页面scale的方案,是比较通用的,几乎满足所有场景。

对于iphone5(dpr=2),添加如下的meta标签,设置viewport(scale 0.5):

这样,页面中的所有的border: 1px都将缩小0.5,从而达到border: 0.5px;的效果。

看一下实现后的效果图对比(右图为优化过的):

解惑好文:移动端H5页面高清多屏适配方案

然而,页面scale,必然会带来一些问题:

1)字体大小会被缩放

2)页面布局会被缩放(如: div的宽高等)

这两个问题后面讲到…

多屏适配布局问题

移动端布局,为了适配各种大屏手机,目前最好用的方案莫过于使用相对单位rem。

基于rem的原理,我们要做的就是: 针对不同手机屏幕尺寸和dpr动态的改变根节点html的font-size大小(基准值)。

这里我们提取了一个公式(rem表示基准值)

rem = document.documentElement.clientWidth * dpr / 10

说明:

1)乘以dpr,是因为页面有可能为了实现1px border页面会缩放(scale) 1/dpr 倍(如果没有,dpr=1)。

2)除以10,是为了取整,方便计算(理论上可以是任何值)

所以就像下面这样,html的font-size可能会:

iPhone3gs: 320px / 10 = 32px

iPhone4/5: 320px * 2 / 10 = 64px

iPhone6: 375px * 2 / 10 = 75px

对于动态改变根节点html的font-size,我们可以通过css做,也可以通过javascript做。

css方式,可以通过设备宽度来媒体查询来改变html的font-size:

解惑好文:移动端H5页面高清多屏适配方案

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • [移动端] IOS下border-image不起作用的解决办法 - 小路_同学

    [移动端] IOS下border-image不起作用的解决办法 - 小路_同学

    2017-05-02 12:04

  • 移动前端常用meta标签 - 0jiji0

    移动前端常用meta标签 - 0jiji0

    2017-04-21 12:00

  • 移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    2017-04-16 11:00

  • 妈妈再也不用担心我的移动端了:网易和淘宝的rem方案剖析 - 菜鸟先飞1992

    妈妈再也不用担心我的移动端了:网易和淘宝的rem方案剖析 - 菜鸟先飞

    2017-03-28 11:01

网友点评