根据dpr设置html fontsize,移动端自适应处理-dpr

根据dpr设置html fontsize,移动端自适应处理-dpr可伸缩布局方案 这个只是手淘的一个插件移动端高清多屏适配方案 主要参考的是这个概念阐述 1 物理像素 physicalpixe 一个物理像素是显示器 手机屏幕 上最小的物理显示物理单元 在操作系统的调度下 每一个设备都有自己的颜色值和亮度值 2 设备独立像素 density independentp 设备独立像素 也叫密度无关像素 可以认为是计算机坐标系统中的一个点 这个点

可伸缩布局方案—这个只是手淘的一个插件移动端高清多屏适配方案—主要参考的是这个

概念阐述:

1.物理像素(physical pixel)一个物理像素是显示器(手机屏幕)上最小的物理显示物理单元,在操作系统的调度下,每一个设备都有自己的颜色值和亮度值。

2.设备独立像素(density-independent pixel)设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中的一个点,这个点代表一个可以由程序使用的虚拟像素(比如:css像素),然后由相关系统转换为物理像素。

3.设备像素比(device pixel ratio)设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系设备像素比=物理像素/设备独立像素 (在x方向或者y方向)

要解决的问题:

1.retina和非retina手机图片显示问题问题:普通屏幕下的图片显示在retina屏幕中可能会导致图片模糊。解决:是在不同的dpr下,加载不同尺寸的图片。

2.border根据设计师的要求为retina下的border物理像素1px,此时的css像素应为0.5px,例如iphone5s;

此时因为页面scale缩小0.5,屏幕的适配布局问题可以使用rem用如下方式解决:

针对不同手机屏幕尺寸和dpr动态的改变根节点html的font-size大小(基准值)

1 rem=document.documentElement.clientWidth*dpr/10;别人写的代码范例:

var dpr,rem,scale;var docEl=document.documentElement;var fontEl=document.createElement(‘style’);var metaEl=document.querySelector(“meta[name=’viewport’]”);dpr=window.devicePixelRatio||1;rem=docEl.clientWidth*dpr/10;scale=1/dpr;//设置viewport,进行缩放,达到高清效果metaEl.setAttribute(‘content’,’width=’+dpr*docEl.clientWidth+’,initial-scale=’+scale+’,maximum-scale=’+scale+’,minimum-scale=’+scale+’,user-scalable=no’);//设置data-dpi属性,留作的css hack之用docEl.setAttribute(‘data-dpr’,dpr);//动态写入样式docEl.firstElementChild.appendChild(fontEl);fontEl.innerHTML=’html{font-size:’+rem+’px!important;}’;//给js调用,某一dpr下rem和px之间的转换函数window.rem2px=function(v){ v=parseFloat(v); return v/rem;}window.px2rem=function(v){ v=parseFloat(v) return v/rem;}此时,字体也需要相应的进行处理(注意字体不要用rem,误差会比较大),此处写了一个@mixin进行处理

//定义一个mixin 根据不同dpr将px值转化成相应的dpr的px值。/* @params $name 是css属性 比如width,top,font-size等 @params $px 像素值*/@mixin px2px($name,$px){ #{$name}:round($px/2)*1px; [data-dpr=’2′]&{ #{$name}:$px*1px; } // for mx3 [data-dpr=”2.5″] & { #{$name}: round($px * 2.5 / 2) * 1px; } // for 小米note [data-dpr=”2.75″] & { #{$name}: round($px * 2.75 / 2) * 1px; } [data-dpr=”3″] & { #{$name}: round($px / 2 * 3) * 1px } // for 三星note4 [data-dpr=”4″] & { #{$name}: $px * 2px; }}总结:一般都不会用到处理css border-width:0.5px;的问题,所以为认为目前dpr需要处理的问题是retina屏幕下高清图片的显示问题,一般设置即可:

31d2cf677edc0137acb933dfa8ace5c1.png

举报/反馈

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227807.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:29
下一篇 2026年3月16日 下午8:29


相关推荐

  • python中dtype什么意思_NumPy Python中的数据类型对象(dtype)

    python中dtype什么意思_NumPy Python中的数据类型对象(dtype)每个ndarray都有一个关联的数据类型(dtype)对象。此数据类型对象(dtype)告知我们有关数组布局的信息。这意味着它为我们提供了有关以下信息:数据类型(整数,浮点数,Python对象等)数据大小(字节数)数据的字节顺序(小端或大端)ndarray的值存储在缓冲区中,可以将其视为内存字节的连续块。因此,如何解释这些字节由dtype对象给出。1,构造数据类型(dtype)对象:数据类型对象…

    2022年6月5日
    108
  • pycharm不支持32位系统怎么办_win10更新一直安装失败

    pycharm不支持32位系统怎么办_win10更新一直安装失败出现ThisinstallationcontainsJetBrainsRuntime11whichdoesnotsupportMicrosoftWindows32-bitversion.这个导致的原因是电脑操作系统是32位的,不支持Pycharm64位的软件安装,因此需要我们去下载一个Pycharm32位的软件版本。可以在https://www.jetbrains.com/pycharm/download/other.html这里进入,选择Pycharm低版本的,例如2018版本P

    2022年8月25日
    7
  • Midjourney怎样写风格化提示词_Midjourney风格提示词写法【教程】

    Midjourney怎样写风格化提示词_Midjourney风格提示词写法【教程】

    2026年3月15日
    3
  • Spring Boot Vue全栈开发实战_java web前端

    Spring Boot Vue全栈开发实战_java web前端构建SpringBoot项目并通过登录DEMO打通前后端的联系,为下一步开发打下基础。

    2022年10月12日
    6
  • elasticsearch面试常问问题_面试题 谈谈你对加班的看法

    elasticsearch面试常问问题_面试题 谈谈你对加班的看法前言随着企业对近实时搜索的迫切需求,Elasticsearch受到越来越多的关注,无论是阿里、腾讯、京东等互联网企业,还是平安、顺丰等传统企业都对Elasticsearch有广泛的使用,但是在Elasticsearch6.8发布以前,大部分Elasticsearch功能都是付费的,开源版本的Elasticsearch在集群管控方面能力有限,鉴于此,通用的实施方案就是给Elasticsearch添加一层网关,从而实现对Elasticsearch的管控。全套Java面试资料白嫖:

    2025年11月5日
    5
  • 无锁队列相关

    无锁队列相关无锁队列正常的队列在多线程的情况下进行使用时 需要对其进行锁操作避免临界区冲突问题 在思考这个问题的时候 针对的环境是多线程情况下插入不同的队列元素 在这种环境中要保证队列安全 无锁队列本质上还是一个基于锁的操作 就是将 head 和 tail 进行了锁保护 而不是针对整个队列的锁保护 CAS 原子操作 一个针对每个变量的锁 CAS CompareAndSe 是个 CPU 指令 X86 下对应的是 CMPXCHG 汇编指令 通过指令的返回值可以确定有没有对目标数据完成赋值 如果有的话 就认为加了锁 基于

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号