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

    一、像素

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

    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

  • 相关阅读:
    jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
    如何使用 jMeter Parallel Controller
    使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
    使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
    关于 SAP 电商云首页加载时触发的 OCC API 请求
    SAP UI5 确保控件 id 全局唯一的实现方法
    SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
    介绍一个好用的能让网页变成黑色背景的护眼 Chrome 扩展应用
    Chrome 开发者工具 performance 标签页的用法
    Client Side Cache 和 Server Side Cache 的区别
  • 原文地址:https://www.cnblogs.com/kiko-2/p/10283918.html
Copyright © 2011-2022 走看看