资讯专栏INFORMATION COLUMN

移动端h5页面适配

张率功 / 985人阅读

摘要:一直对页面充满崇敬揣着忐忑的心开始了我的之旅。但实际情况却并非如此理由如上但在移动设备上,必须弄明白这点。其他品牌的移动设备也是这个道理。

一直对h5页面充满崇敬,揣着忐忑的心开始了我的h5之旅。才发现直接照抄网上的方案是很容易,但是想真的了解内部的原理,这就给我了一个下马威了.通过在网上各种找资料,才将各种概念以及原理了解清楚.故写下这篇文章用于积累知识,如有问题,欢迎指正!

在开始做手机端适配的时候我们需要去了解一些概念 1.设备像素

先来看看很多资料上面的描述

它是物理概念,指的是设备中使用的物理像素(Physic pixel)。这个单位用px表示,它是一个[相对绝对单位]———— 即在同样一个设备上,每1个设备像素所代表的物理长度(如英寸)是固定不变的(即设备像素的绝对性); 但在不同的设备之间,每1个设备像素所代表的物理长度(如英寸)是可以变化的(即设备像素的相对性);

总结的说: 就是像素就相当于我们日常所说的的厘米(cm)、米(m)、克(g)这些度量单位,但稍微有些不同的是它是个相对单位,对于不同的设备中它对应的英寸数是不一样的.设备像素就是这个设备上总共有多少个这样的单位像素

2.css中的px 等同于设备独立像素

这个也是一个相对单位,所以它在一个设备中具体表现为多少英尺不确定,除受到设备宽度影响外还有以下两点可以影响它。

1、屏幕布局视口大小
2、屏幕的分辨率

由上概念我们知道 1设备像素 ≠ 1css像素

那为什么我们以前在做web端网页的时候没有考虑过这个问题呢?
在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此(理由如上),但在移动设备上,必须弄明白这点。在早先的移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为320x480,在iphone3上,一个css像素确实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4开始,苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。

这两个概念不同对我们在开发h5页面产生什么样的影响呢,哈哈,应该你会说这不废话吗,当然是不能够将设计师的设计稿百分百的还原到手机上,嗯,是的你说的没错,那怎样才能做到百分百的还原呢?这里面先买个关子,后面我们慢慢来分析.

3.设备分辨率(设备分辨率的单位就是上面所说的设备像素)

先来一张图

分辨率这个概念相信大家接触的都不少,我们都知道同种宽高屏幕下分辨率越高屏幕的清晰度也就越高.为什么这样呢?因为设备像素就是屏幕中一个个的点,设备分辨率就是横向点的个数 * 纵向点的个数, 这一个点就是一个一个的马赛克色块,同物理宽度的范围内这种马赛克色块越多显然我们看到的颜色也就越清晰.

设备分辨率在设备出厂时就已经定了,并不能更改了.读到这可能有人就有疑惑了,我们在用电脑的时候可都是可以调节分辨率的

电脑上面调整分辨率的时候,其实我怎么调它的像素点数还是那么多的.不信你看电脑,人家系统给你推荐的是1366px  768px的分辨率,你知道意味着什么吗?没错,微软在这块屏幕上横向设置了768个像素,竖向设置1366个像素。再怎么拉扯,这个数字是不会变了。那么,为啥我还能调整分辨率呢?我要是调整到800px  600px,按照定义,横向就是60个像素,竖向就是800个像素了啊。其实呢,你把分辨率调800  600,系统就会分配给你800  600个有效像素个数,也就是真实的色彩块。其他的个数呢,就由系统自作主张,通过一系列运算给你一个模拟色彩块,填充成正好1366*768个色彩块。这些拿来充数的像素块,和真实的像素块放到一起。就好比一个正规军,里面掺了很多杂牌军一样,只能是队伍不好带了
4.屏幕像素密度(PPI,每英尺展示的像素块数)

计算公式 PPI = 屏幕对角线的像素数/屏幕对角线的长度。
由此我们可以知道PPI越大屏幕的清晰度越高

5.视口viewport

布局视口,布局视口是看不见的,浏览器厂商设置的一个固定值,一般是768px~1024px之间。这里我们可以认为它是一个画板用于展示网页。

视觉视口,浏览器可视区域的大小,即用户看到的网页的区域,继承布局视口的宽度,所以我们在一个布局视口为980px的浏览器上一行上是可以放980px(css像素)内容的.

理想视口,它对设备来说是最理想的布局视口,用户不需要对页面进行缩放就能完美的显示整个页面。这个理想的宽度是指以CSS像素单位计算的宽度,即屏幕的逻辑像素宽度,跟设备的物理宽度没有关系。在css中,这个宽度就相当于100%的所代表的那个宽度。

6.那我们该怎么做才能百分百的还原网页呢?

首先我们先想想上面这些所带来的影响:

1px 的css像素不代表1设备像素了,这样在dpr>1的时候,我们会明显的发现我们设置的1px像素的东西明显的看着粗一些

页面无法相对于设计稿等比例的缩放

我们的目的是将1设备像素等于1css像素,鉴于这个目的我们说说我的方案.具体代码可看我写的demo
根据不同屏幕来动态写入font-size和改变布局视口,并以rem作为宽度单位

1.使用meta标签对viewport进行设置达到1css像素等于1个设备像素 以dpr为2为例 即

解释: 首先我们要知道如果不设置meta viewport标签,那么移动设备上浏览器默认的layout viewport宽度值为980px,1024px等这些,所以第一步我们先将视口宽度设置和布局宽度一样即在html头部设置(这个时候我们不做下一步的操作也能做到自适应网页,但有1px的问题存在,我们可以通过接下来的这一步来解决这个问题)。然后通过js来获取不同的dpr获取scale=1/dpr来设置这样设置就可以解决1px的问题了

2.将屏幕分为固定的块数10:作为1rem所代表的px值 ,并给html设置font-size为这个值

注:屏幕即布局视口可通过document.documentElement.clientWidth获得.这里将屏幕分成10等份,当然你也可以分成其他等份,不过最好是10的倍数,这样我们算出的rem小数点也会少些,这样还原度也会高些)`

这样在任何屏幕下,总长度都为10rem。1rem对应的值也不固定,与屏幕的布局视口宽度有关。

3.量取psd获得px值并除于1个rem代表的px数获得对应rem值,这个转化有多种方式我主要用过以下两种方式

使用sublime text中的插件来实现转换,具体怎么做可参照这个
使用postcss的插件postcss-pxtorem,具体可参照

关于文字 : 我这边用的方案中字体大小也是使用rem,也就意味着我们的段落文字随着屏幕增大,等比例缩放,这样一行所展示的文字个数也一样。这只是其中的一个方案,还有一种文字不使用rem作为单位,这样就需要针对字体做特殊的处理,使用一些预处理或者后处理的方式,针对dpr不同计算出不同dpr下文字对应的大小,这种方案可参考中有说明;

总结

哈哈,终于将这篇文章写完了,总结一哈

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95709.html

相关文章

  • 从零搭建移动H5开发项目实战

    摘要:并且除了常用的端,还要考虑微信端,或者是端。所以我们要有一套机制,在端上走的代码,在端或者微信端上走端对应的代码。对于一个从零开始的移动端项目,我总结了以上这些移动开发难点,希望之后的人能少踩点坑,站在我的肩膀上提高项目开发的效率和质量。 从零搭建移动H5开发项目实战 前端H5的前世今身 在Pc的时代,前端技术无疑统治了大多数用户的交互界面!而在移动为王的今天,NA开发在早期占领了大多...

    terro 评论0 收藏0
  • 从零搭建移动H5开发项目实战

    摘要:并且除了常用的端,还要考虑微信端,或者是端。所以我们要有一套机制,在端上走的代码,在端或者微信端上走端对应的代码。对于一个从零开始的移动端项目,我总结了以上这些移动开发难点,希望之后的人能少踩点坑,站在我的肩膀上提高项目开发的效率和质量。 从零搭建移动H5开发项目实战 前端H5的前世今身 在Pc的时代,前端技术无疑统治了大多数用户的交互界面!而在移动为王的今天,NA开发在早期占领了大多...

    pepperwang 评论0 收藏0
  • 移动布局与适配

    摘要:实战之微信钱包腾讯服务界面网格布局是让开发人员设计一个网格并将内容放在这些网格内。对于移动端适配,不同的公司不同的团队有不同的解决方案。栅格系统用于处理页面多终端适配的问题。 grid实战之微信钱包 腾讯服务界面 CSS3网格布局是让开发人员设计一个网格并将内容放在这些网格内。而不是使用浮动制作一个网格,实际上是你将一个元素声明为一个网格容器,并把元素内容置于网格中。 移动端页面适配—...

    Clect 评论0 收藏0
  • 移动适配方案

    摘要:业务环境是决定整体项目的适配方案的核心因素。而淘宝的主站和类似,分为移动端页面和端页面,端页面同样有着左右的留白,这也是为了让用户能够在宽屏的时候将注意力集中在中间区域。 移动端适配方案 移动端适配方案是一个老生常谈的话题,但是对于不同的项目、不同的业务场景可能会需要不同的适配方案来进行移动端适配,向下兼容的baseline也需要提前订好。 整体宽高 其实移动端适配就和下面的玩具一样,...

    feng409 评论0 收藏0
  • vue移动h5页面根据屏幕适配的四种方案

    摘要:在移动端页面当中,其中适配是经常会遇到的问题,这块主要有死个方法可以适用。目前全网找或者是尝试来看,确实没有一个十全十美的适配的解决方案,只能不断在实践应用当中慢慢填坑最近做了两个关于h5页面对接公众号的项目,不得不提打开微信浏览器内置地图导航的功能确实有点恶心。下次想起来了的话,进行总结分享一下如何处理。在vue移动端h5页面当中,其中适配是经常会遇到的问题,这块主要有死个方法可以适用。 ...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<