移动端适配dpr

2023-11-15

1. 移动端适配的代码(设计稿iPhone6)如下:

(function (doc,win) {

  // seMetaTagScale(doc, win)
  var fn = function () { 
    var deviceWidth =  doc.documentElement.clientWidth; // css逻辑像素,不是物理像素
    if (deviceWidth >= 828) { // 超过某个宽度,保持font-size值不变。
      deviceWidth = 828;
    }
    doc.documentElement.style.fontSize = deviceWidth / 5 + 'px';// 根元素的font-size的值,一般取移动端ui组件库的建议值比较好。
  }
  window.addEventListener('orientationchange'in win ? 'orientationchange' : 'resize', fn ,false);
  doc.addEventListener('DOMContentLoaded',fn,false);

})(document,window)

function seMetaTagScale(doc, win) {
  const dpr = win.devicePixelRatio;
  const scale = 1 / dpr;
  const contentStr = `width=device-width,initial-scale=${scale},minimum-scale=${scale},maximum-scale=${scale},user-scalable=no`;
  const metaDOM = doc.querySelector('meta[name="viewport"]');
  metaDOM.setAttribute('content', contentStr)
}

2.window.devicePixelRatio

  • 是什么
    window.devicePixelRatio获取的是设备物理像素和独立像素的比。
  • 应用
    缩放比用1/dpr可以解决1px边框在移动端屏幕上显示“粗”的问题,以屏幕物理像素来显示这1px的边框。

3.屏幕分辨率

  • 概念
    像素每英寸(Pixel per inch, ppi)。指纵横向上的像素点数,单位是px。例如,1920 * 1080 ,表示屏幕横向像素为1920px,纵向为1080px
  • 注意
    有一点要明确,谷歌浏览器模拟调试移动端看到的iPhone6的屏幕宽度为375,指的是css像素(设备独立像素或者逻辑像素),而750px指的是手机上的真实存在的物理像素,例如,iPhnoe6屏幕物理像素点750 * 1334。这里也就是手机系统设置中的屏幕分辨率。

4.document.documentElement.clientWidth

  • document.documentElement.clientWidth获取的是移动设备的layout viewport(布局视口宽度),也是网页的宽度。是css像素
  • 不包括滚动条的宽度。而window.innerWidth是包括的,二者之差,可以得出滚动条的宽度。

5.理想视口

理想视口怎么得到?width=device-width,这是将layout viewport(布局视口)宽度设置为设备屏幕宽度,这句就得到了理想视口。

6.若屏幕分辨率过大,像平板这种,如何处理呢?

  • 我的处理是设置一个屏幕阈值,当屏幕物理像素(document.documentElement.clientWidth)超过某个值时,页面便不再等比变化进行适配
  • 这样处理,势必会导致视口区域留白。因此,我会将页面居中显示,然后,背景色为黑色。这样显示稍微好点。如图:
    在这里插入图片描述
    css样式为:
html{
    width: 100%;
    background-color: #000;
}
body{
    width: 7.5rem;
    margin: 0 auto;
    background: #fff;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动端适配dpr 的相关文章

  • 微信小程序如何循环控制一行显示几个wx:for

    正如上图所显示的一样 我们改如何控制一行显示几个图形呢 首先第一种方法 数量少的可以自己一行一行的写 但是当数据很多的时候呢 这时候就需要我们区使用循环进行代码的编写 废话不多数 直接写代码 demo item width 40 demo
  • js判断Android、iOS或浏览器

    第一种 通过判断浏览器的userAgent 用正则来判断是否是ios和Android客户端 代码如下
  • vue-cli3项目中使用flexible和rem适配移动端的一些踩坑

    最近在做一个移动端的项目 需要做一些适配处理 其实以前一直都是浑水摸鱼式的 虽然看了很多关于移动端适配的方案 感觉都很厉害 但一直迟迟不曾实践 ps 好像大部分中小公司对这方面都没啥要求啊 在网上找了一番后 发现手淘的flexible re
  • Android:ARouter原理源码解析

    文章目录 前言 一 ARouter使用 二 ARouter初始化 init 函数 整体 LogisticsCenter初始化 拦截器初始化 三 跳转解析 跳转 总结 前言 一 ARouter使用 ARouter的基本使用请参考这篇博客 AR
  • Android Studio 安装虚拟机报错 Intel® HAXM installation failed.

    Android Studio 安装虚拟机时报错 Intel HAXM installation failed To install Intel HAXM follow the instructions found at https gith
  • 【Flutter 3-4】Flutter进阶教程——数据持久化sqflite使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me sqflite 数据持久化是在移动端开发中必不可少的技术手段 我们总是有一些用户信息 应用资源 列表数据等需要存储起来 这里我们主要来讲基于SQLite数据库的数据储存 SQLite
  • window配置weex项目的android studio环境

    weex 虽然做的是前端的工作但是越往后面觉的如果不会一门移动端的框架是多么的无力 于是就开始了之前非常看好的weex框架 该框架起初是由阿里巴巴内部开源的 后面移交给apache成长历程可谓是一波三折 和react native比起来有些
  • WEEX框架(一)框架简介和快速上手体验

    框架简介 Weex 是能够完美兼顾性能与动态性 让移动开发者通过简捷的前端语法写出Native级别的性能体验的框架 并支持iOS 安卓 Web等多端部署 由阿里巴巴研发和维护 对于移动开发者来说 Weex主要解决了频繁发版和多端研发两大痛点
  • 移动端/帆软移动报表调用拨打电话

    HTML a标签的href 属性 tel 点击可以直接拨打电话 移动端 a href 13622178579 a 把某个单元格 形态赋值为 公式形态 a href style color 508ef9 a ps F1列存储电话号码
  • 毕设-解决移动端用HTTP协议从onenet平台上获取数据流的多个数据点的问题

    onenet平台 OneNET是由中国移动打造的PaaS物联网开放平台 平台能够帮助开发者轻松实现设备接入与设备连接 快速完成产品开发部署 为智能硬件 智能家居产品提供完善的物联网解决方案 产品信息 至于怎么创建产品我就不做过多的介绍了 我
  • Audio在移动端的兼容性问题(1)

    需求 做一个SPA的web互动测试游戏 题目是自动切换播放的音频 根据音频内容选择正确选项 兼容移动端的微信 APP 浏览器和PC端的主流浏览器 准备 第一步 我们先查看兼容性 打开Can I Use CanIUse提供了各种浏览器所能支持
  • js与移动端交互

    1 js 调用移动端ios与android方法 2 移动端ios与android调用js方法 3 demo如下 div div
  • 如何在PC上查看一个web页面在移动端的展示效果

    最近在chrome上发现一个东东 emulation 这个果断可以用来模拟web页面在移动端的显示结果 F12的界面 点击 Show drawer 就可以看到这个界面了 这里可以选择各种设备 选中之后 点击emulate就可以模拟了 这个就
  • pc微信禁止启动小程序

    场景 最近 Windows 微信的更新了可以访问小程序的功能 但还不完善 如 尝试播放激励视频时 会直接跳过视频并作为已完成处理等 身为开发者的我们可能需要做一些处理 禁止pc的微信访问小程序 以达到减小损失的目的 提要 App onLau
  • 移动端浏览器兼容性问题

    在开发移动端商城项目的时候 在实现功能和处理bug的过程中出现了一些之前没有见过的问题 在这里记录一下 1 IOS移动端click事件300ms的延迟响应 移动设备上的web网页是有300ms延迟的 玩玩会形成按钮点击延迟甚至是点击失效 这
  • uni-app 1、app-plus的使用,#ifdef MP只兼容小程序

    最近开始查看uni app的一些项目 在pages json里面发现app plus 百度了下看见一些网友的解释是app跟h5端执行 小程序则不执行 只测试过微信小程序 据说其他小程序也不执行 代码如下 path pages index i
  • 响应式布局之REM

    REM是实现响应式布局的方案之一 除了REM之外 还有VM REM VM 今天主要来记录一下REM的实操 一 安装插件 npm install lib flexible npm install postcss plugin px2rem D
  • H5监听移动端物理/浏览器返回键

    JavaScript没有监听物理返回键的API 所以只能使用 popstate 事件监听 工具类如下 export function handleBrowserGoBack back console log back pushHistory
  • ADB:常用指令汇总

    常用指令
  • Andriod:andriod手机屏幕坐标系

    如图所示 左上角为坐标原点 越向下 y值越大 越向右 x值越大

随机推荐

  • 用docker借助deepo镜像训练深度学习模型

    这里写自定义目录标题 用docker借助deepo镜像训练深度学习模型 Deepo简介 docker hub 地址 安装步骤 运行 用docker借助deepo镜像训练深度学习模型 Deepo简介 deepo是我从网上了解的一个比较全的深度
  • 回想过去几年的编程生活

    17年 我从一所普通的二本学校毕业 抱着对未来无限憧憬的希望踏上社会 3年初中 3年高中 4年大学 一步一步 努力奋斗 终于要开始挣钱了 终于可以独立了 仿佛美好的一切都会来的 记得是16年的是12月 大四上学期 结束 我迫不及待的找了一份
  • (实习)基线检测时遇到的问题

    首先要先清楚什么是基线检测 安全基线其实是系统最低安全要求的配置 常见的安全基线配置标准有ISO270001 等级保护2 0等 企业也可以建立自己的标准 检测的内容 分为三个方面 1 系统存在的安全漏洞 2 系统配置的脆弱性 3 系统状态的
  • ★动态规划(DP算法)详解

    什么是动态规划 动态规划 百度百科 内容太多了不作介绍 重点部分是无后效性 重叠子问题 最优子结构 问S gt P1和S gt P2有多少种路径数 毫无疑问可以先从S开始深搜两次 S gt P1和S gt P2找出所有路径数 但是当这个图足
  • linux上使用libreoffice对文件类型转换

    目录 libreoffice下载与安装 使用 常见问题 libreoffice下载与安装 1 手动下载 https www libreoffice org download download libreoffice type deb x86
  • JVM类加载机制以及类缓存问题的处理

    当一个java项目启动的时候 JVM会找到main方法 根据对象之间的调用来对class文件和所引用的jar包中的class文件进行加载 其步骤分为加载 验证 准备 解析 初始化 使用和卸载 方法区中开辟内存来存储类的运行时数据结构 包括静
  • 安装cvxpy之后,报错The solver GLPK_MI is not installed

    安装cvxpy之后用的时候 报错The solver GLPK MI is not installed 这边我们可以用以下代码查看已经安装的下载器 print cvxpy installed solvers 在安装个cvxopt即可 pip
  • 基于SpringBoot的财务管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mav
  • 解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure(真实有效)

    数据库连接失败 一 例如我在SpringBoot项目中使用了阿里的数据库连接池Driud 有次在启动的时候 会报这样的错 Caused by com mysql cj exceptions CJCommunicationsException
  • 艺术品拍卖爬虫:使用Python抓取艺术品拍卖网站上的拍卖信息与成交价格

    目录 第2部分 爬取艺术品拍卖网站数据 2 1 确定目标网站 2 2 获取页面内容 2 3 解析网页内容
  • 学习编程有必要做笔记吗?

    小编发现W3Cschool的程序员很喜欢记笔记 桌面永远挂着个笔记软件 笔记本也写的密密麻麻的 那么做编程真的有必要做笔记吗 怎么记呢 一起来看下知乎网友怎么说 花生PeA 记不记笔记看情况 比如题主学的HTML CSS PHP 已经有十分
  • 行内元素的默认的横向边距与纵向边距

    行内元素在渲染是会默认添加右侧和底部边距 如果在多个图片排列时这种情况就比较明显 当我们需要在布局上完全无边距的时候就需要去除这些编剧 去除方法就是 在单元元素上添加下面对应的属性去除边距 去除横向边距 x noSpace font siz
  • 梯度下降法解决线性回归

    用梯度下降的优化方法来快速解决线性回归问题 import tensorflow as tf import numpy as np import matplotlib pyplot as plt import os os environ TF
  • 560. Subarray Sum Equals K

    Given an array of integers and an integer k you need to find the total number of continuous subarrays whose sum equals t
  • Java服务器授权+授权工具部分代码及思路

    目标 项目部署到服务器上 需要当前服务器授权后才能正常访问 控制项目授权日期 某终端 通道 授权数量 用户登录访问菜单权限 注 授权端 授权工具在自己手里 控制授权 在此我称之为授权工具 被授权端 jar包部署的服务器端 在此我称之为服务器
  • 大学生团体天梯赛(第十届)

    题目地址 天梯赛 include
  • 【区块链技术工坊45期】陈军:用案例解析通证经济模型设计

    1 活动基本信息 1 题目 区块链技术工坊45期 案例解析通证经济模型设计 2 议题 传统的新技术出现 人们只需要精通其语言规范和工具即可付诸应用 而区块链技术的出现却伴随着一个新的经济概念 即通证经济 有人说没有通证经济模型的区块链应用不
  • 专题:编程案例

    目录 案例一 买飞机票 代码优化 总结 案例二 求区间之内的素数 案例三 开发验证码 随机验证码的核心逻辑 案例四 评委打分 案例五 数字加密 案例六 模拟双色球系统 案例一 买飞机票 import java util Scanner pu
  • java 多线程之 implements Runnable

    请看以下题目 public class testController implements Runnable int b 100 synchronized void m1 throws InterruptedException b 1000
  • 移动端适配dpr

    1 移动端适配的代码 设计稿iPhone6 如下 function doc win seMetaTagScale doc win var fn function var deviceWidth doc documentElement cli