zoukankan      html  css  js  c++  java
  • 移动端自适应

    1、js动态设置html的字体大小

    var clientWidth = 0;
    if(document.documentElement.clientWidth >= 600){
        clientWidth = 600;
    }else{
        clientWidth = document.documentElement.clientWidth;
    }
    document.documentElement.style.fontSize = 50 * clientWidth/375 + 'px';
    
    window.onresize = function(){
        if(document.documentElement.clientWidth >= 600){
            clientWidth = 600;
        }else{
            clientWidth = document.documentElement.clientWidth;
        }
        document.documentElement.style.fontSize = 50 * clientWidth/375 + 'px';
    }

    设计稿宽度750px,设备宽度350px,此时HTML 的font-size:50px,及1rem=50px; 假设一元素在设计稿上宽度为750px,750/100=7.5rem(7.5*50=375px)。

    计算方法:设计稿的尺寸 / 100  =  XXX rem;

    2、设置html的font-size: 13.33vw

    首先要先说明:移动端的设计稿一般是width:750px,height:auto(这里指的是不确定),100vw = 100%,这个也没有问题吧;那么,设计稿拿过来,我们可以得出:750px = 100vw,这个也没有问题吧,那么1px等于多少vw呢? 是不是 1px = 100 / 750 vw = 0.1333vw;那么100px = 多少vw呢,这个应该知道了吧。100px = 13.33vw;

    思路过程:

    mobile.width = 750px  => 750px = 100% =100vw => 750px = 100vw => 1px = 0.1333vw => 100px = 13.33vw => 1rem =100px;

    即:我们把html:{font-size: 13.33vw} // 也就是以100px位基准;1rem = 100px;

    计算方法:设计稿的尺寸 / 100 /2  =  XXX rem;

    3、设置html的font-size并缩放页面

    var html = document.getElementsByTagName('html')[0];
    
        var width = html.getBoundingClientRect().width;
    
        html.style.fontSize = width / 16 + 'px';
    
        var PixelRaio = 1 / window.devicePixelRatio;
    
        document.write('<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=' + PixelRaio + ',minimum-scale=' + PixelRaio + ',maximum-scale=' + PixelRaio + '"/>')

     计算方法:设计稿的尺寸 / 46.875  =  XXX rem;

    4、布局单位使用vw和vh

    vw:是相对于视窗宽度的单位,100vw为浏览器视窗的总宽度,也即相对于html的100%。

    vh:是相对于视窗高度的单位,100vh为浏览器视窗的总高度,也即相对于html的height:100%。

    vmin:当前 vw 和 vh 中较小的一个值

    vmax:当前 vw 和 vh 中较大的一个值

     注意:此处的宽高指的是可视区域,即window.innerWidth/window.innerHeight大小,不包含任务栏、标题栏以及底部工具栏的浏览器区域大小。

    vmin、vmax 用处:

    做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。
    由于 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就可以用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。
  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/gxp69/p/9943012.html
Copyright © 2011-2022 走看看