• libflexible 知识点整理


    目标:解决移动端界面适配问题

    观点:一、不同像素比的设备上的文字呈现出来的大小应该是一致的 

             二、ios设备的设备像素比分为1,2;android设备的设备像素比都为1

             三、以540为基准宽度,以width/10为根源素fontsize

             四、图片采用2x以上的

    解决方案:

            一:将1/dpr设置为缩放比例且body上的fontsize设置为12*dpr,这样就能保证字体在不同设备像素比的设备字体一致(仅能保证默认字体大小是一致的,如果存在自定义的字体大小需要自己手动或者插件进行转换)

            二:都是经验之谈,减少不必要的工作量

            三:这个540其实是个经验值,或者最大值,这个经验是怎么得出来的呢?
    目前主流手机最大的css像素尺寸,是540(比如devicePixelRatio为2,分辨率是1080x1920的手机),所以用了这个经验值。这样可以让在ipad横屏这种情况下浏览无线页面,不至于因为拉伸适配后体验太差。
    换句话说,这个540像素值是手机屏幕能到达的最大宽度(在考虑dpr以后),如果有宽度超过540的情况,则说明该网页被显示在 dpr超过1的大屏安卓机、ipad、PC端上。这时候,就使用540这个宽度(代码里是dpr*540,除了iPhone不会有dpr超过1的情况出现,所以基本上就是540)作为默认宽度。然后将屏幕宽度除以10作为rem值(模拟vw/vh实现),应用在document元素上,并且将计算得到的rem值输出到全局变量以供调用。

           四:由于ios端dpr的值为2所以物理像素/css像素的值为2,意味者1个css占据一4个物理像素,一个CSS像素点实际分成了四个,这样就造成了颜色只能近似选取,于是,我们看上去就变得模糊了,反之位图图像质量是由单位长度内像素的多少来决定的。单位长度内像素越多,分辨率越高,图像的效果越好,所以要采用2x以上的图片。

    其他:设置user-scalable=no在手机浏览器上面并不能生效,webview可以生效

             脚本禁止用户手动缩放:

         

    document.documentElement.addEventListener('touchstart', function (event) {
        if (event.touches.length > 1)event.preventDefault();
    }, false);
    var lastTouchEnd = 0;
    document.documentElement.addEventListener('touchend', function (event) {
        var now = (new Date()).getTime();
        if (now - lastTouchEnd <= 300)event.preventDefault();
        lastTouchEnd = now;
    }, false);

         链接:https://github.com/amfe/article/issues/17#ref-issue-382582765

                  https://blog.csdn.net/hu_mouse/article/details/46805251

                  https://www.w3cplus.com/css/viewports.html

  • 相关阅读:
    [转]WIBKIT技术资料
    WebKit学习要点
    提高IOS开发效率的常用网站、开源类库及工具
    【浏览器那些基础】Android平台有那些CPU类型
    深刻的理解
    Spring Boot 最流行的 16 条实践解读,值得收藏!
    MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
    为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?
    朋友,别告诉我你懂分布式事务!
    分布式锁用 Redis 还是 Zookeeper?
  • 原文地址:https://www.cnblogs.com/zale-blogs/p/12426599.html
Copyright © 2020-2023  润新知