• 移动端自适应


    一、像素

    设备像素:设备屏幕的物理像素,对于任何设备来讲物理像素的数量是固定的。

    css像素:这是一个抽象的像素概念,它是为web开发者创造的。

    记住:当你给元素设置了 200px 时,这个元素的宽度跨越了200个CSS像素。但是它并不一定跨越200个设备像素,至于会跨越多少个设备像素,就取决于手机屏幕的特性用户的缩放了,举个栗子:

    苹果手机的视网膜屏幕,是一个高密度屏幕,它的像素密度是普通屏幕的2倍,所以当我们设置 200px; 时,200个CSS像素跨越了400个设备像素。

    如果用户缩小页面,那么一个CSS像素会明显小于一个设备像素,这个时候 200px; 这条样式中所设置的200个CSS像素跨越不了200个设备像素。

    二、移动端的viewport

    viewport是html的父元素

    布局viewport:document.documentElement.clientWidth

    视觉viewport:设备屏幕大小

    设备像素比dpr:设备像素个数 / 视觉viewport的CSS像素个数 (公式成立的大前提:缩放比例为1

    理解<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    width = device-width  布局viewport宽度 = 视觉viewport宽度;

    initial-scale=1.0    页面初始缩放程度为1;

    minimum-scale=1.0    页面最小缩放程度为1;

    maximum-scale=1.0    页面最大缩放程度为1;

    user-scalable=no    是否允许用户对页面进行缩放操作;

    三、页面自适应方案

    1、手淘方案

    var scale = 1 / window.devicePixelRatio;
    document.querySelector('meta[name="viewport"]').setAttribute('content','width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
    document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px';

    动态设置页面初始缩放程度让 布局viewport = 设备像素;

    设置根元素font-size为布局viewport宽度的十分之一,至于为什么是十分之一看过一个说法 :使100vw = 10rem,方便计算;

    宽度(基于psd)用rem;(不好算)

    2、网易方案

    以iphone6的psd宽度为750px为标准:

    前提<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">;

    规定psd的根元素font-size:100px,则实际页面根元素font-size:50px;

    开发时测量psd尺寸除以100得到rem尺寸;

    动态改变实际页面根元素font-size,无论在什么设备下,页面的总宽度都是7.5rem;

    document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + 'px';

    、文字自适应

    文字大小建议不要换算成rem,而是使用媒体查询来进行动态设置;

    参考网易的代码片段:

    @media screen and (max- 321px) {
        body {
            font-size:16px
        }
    }
    
    @media screen and (min- 321px) and (max-400px) {
        body {
            font-size:17px
        }
    }
    
    @media screen and (min- 400px) {
        body {
            font-size:19px
        }
    }

    具体文字大小要多少个像素以设计图为准,但是这三个等级之间是有规律的;仔细观察发现,321px以下的屏幕字体大小比321px - 400px之间的屏幕字体大小要小一个像素,而321px - 400px之间的屏幕字体大小要比400以上屏幕字体大小要小2个像素。依照这个规律,我们根据设计图所在的像素区段先写好该区段的字体大小,然后分别写出另外两个区段的字体大小媒体查询代码就可以了。

    详解见:https://blog.csdn.net/u013778905/article/details/70768958

  • 相关阅读:
    failonerror on MSBuild
    近期Windows Mobile问题汇总
    android的文件操作 sdcard和rom
    用实际库存数调整批次保留最新的批次
    各种布局layout
    javascript让ui线程让出时间片的模型
    android ListView控件操作绑定数据、单击事件
    Pocket PC 模拟器上网设置
    android单元测试
    打电话发短信
  • 原文地址:https://www.cnblogs.com/kiko-2/p/10283918.html
Copyright © 2020-2023  润新知