只要写手机端的h5页面,viewpoint是绕不过的坎,不处理好这个东西,h5页面就无法正常显示。那它到底是怎么回事呢?
网上曾看到一个据说很有名的外国人,写过一篇"三个viewpoint"的概念,但是看了,觉得似懂非懂,后来做了不少h5页面,然后重新思考viewpoint到底是一种怎样的控制移动端页面的机制?于是我也觉得用"3个viewpoint"解释比较好说,不过跟网上那个外国大佬的"三个viewport"可能会有不少区别
第一个viewpoint,这里临时命名为viewpoint1,就是手机硬件屏幕的水平像素数,比如iPhone6分辨率是750像素,那么这个viewpoint就是750
第二个viewpoint,这里临时命名为viewpoint2,是设计稿尺寸宽度,通常是以一个用户占有率比较高的手机分辨率为基准,很多就是用iPhone6的750
第三个viewpoint,这里临时命名为viewpoint3,就是手机浏览器画布的宽度,它通常有一个远大于硬件分辨率的尺寸,比如980px,和主流PC端网页的内容主体宽度相当。前端能够直接施加影响的就只有viewpoint3这个了,实际上客观存在的viewpoint可以说也只有这一个而已,可以在html中用标签meta设置,也可以JS动态设置。
最终用手机浏览h5页面看到的效果,则是这三个viewpoint共同作用的。 在没有代码干预的情况下,一般手机会有一个从viewpoint3到viewpoint1的缩放。手机为什么要设计这个机制呢?因为手机硬件屏幕小,但是又想让手机能正常浏览PC的页面。
为了更好的体验,人们开始为手机定制web页面,比如既然iphone6是750px,那我就做750px的页面。可是即便如此,手机实际看到的页面效果却仍然是被缩放了,因为750px的页面还是要放入到980px的viewpoint3中来显示,而缩放是viewpoint3到viewpoint1的过程,和设计稿宽度,同时也是页面实际宽度的viewpoint2是无关的。
如果我不想页面缩放呢?那就可以把viewpoint3的默认值980px改成viewpoint2设计稿的宽度750px,然后viewpoint3到viewpoint1的缩放就成了750px到750px的缩放,也就是没有缩放。有人可能说,你这750px是给iPhone6专门设计的,其他分辨率的手机呢?其他手机基本也会正常显示,和iPhone6的区别仅仅是有缩放和没缩放,但实际效果差不多,因为其他主流手机分辨率就算和iPhone6不同也不会差很远,所产生的缩放的效果也很微小。
这就是所谓三个viewpoint共同决定页面效果的机制了,实际挺主流的一种做法用了一堆js,它又是怎么做的呢?以后有空慢慢说吧。
来自:https://my.oschina.net/710409599/blog/3151129
在很多应用都采用同H5页面混合开发模式,这篇主要讲解JS中如何获取原生应用返回给js的数据方法,包括android和ios
h5中新功能用来描述自定义的数据属性,也就是 data-* 自定义属性。在h5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性,来进行一些数据的存放 ,在实际项目中使用比较多。这篇文章就总结如何通过原生js对data-*属性的操作。
减少工作量(一套代码,多个平台),以及快速的更新迭代(譬如线上更新),而且还需要考虑Native端的高性能以及系统API调用能力,混合页面导航栏组件由原生实现,一些重要的业务页面、带有复杂动画或交互的页面以及一些固定页面由原生实现
移动web的兼容性bug的解决方法:远程接口的跨域问题,背景图片会模糊问题,图片加载,拨号功能等
DeviceMotionEven是html5提供的一个用来获取设备物理方向及运动的信息(比如陀螺仪、罗盘及加速计)的Dom事件,利用devicemotion实现手机h5页面摇一摇功能
在做h5活动页面的时候,有这样的一个需求:点击页面的一个按钮就打开本地的一个app应用,如果该应用未下载,则跳转到app的下载页。这个操作是通过连接跳转的形式来实现的,这篇文章就简单讲解下如何操作的?
点击名片识别按钮,将名片上的个人信息扫描并解析出来显示。需要调出手机摄像头和相册,让用户进行选择;获取照片或者图片的base64数据;调取第三方的orc接口进行图片解析,得到名片上的个人信息,并显示。
在ios端默认的长按选择,可以对文字进行复制粘贴。但是在实际开发中,针对一些按钮一般要避免长按时弹出选中文字,或者一些罩层要避免弹出。 这篇文章通过css3实现禁止ios端长按复制选中文字的方法
注册企业微信,在应用与小程序栏目中,设置可信域名,配置公众号菜单。可信域名不得不说下,在最初开发时,认为设置并验证后,微信认证接口会实现跨域请求,其实并没有。所以全在H5端还得配合服务端完成票据获取等操作。
需要在从APP分享出去的H5页面中,带有一个立即打开的按钮,如果本地安装了app,那么就直接唤起本地的app,如果没有安装,则跳转到下载。这是一个很正常的推广和导流量的策略。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!