移动web的适配

article/2025/10/10 11:37:54

我在另一篇文章中谈到过一些移动端分辨率自适应问题,主要是基于个人实际开发中遇到的问题提出的解决方法。
近期有幸听到他人对移动web开发的分享,特来补充上一篇文章,向大神讨教。

Part 1 理解关于长度单位的一些概念

1、设备像素或逻辑像素
指设备能控制显示的最小物理单位,意指屏幕上一个个的点
(还是不理解??太正常了,接着往下看)
2、CSS像素或设备独立像素
指CSS样式代码中使用的逻辑像素,即px(在iPhone中单位为pt)
(这个好理解吧)
3、像素密度(PPI)
指设备能控制显示的最小物理单位,意指屏幕上一个个的点
(嘻嘻,=设备像素或逻辑像素)
PPI越高,分辨率也就越高
4、像素比(dpr)
设备像素比=设备像素/CSS像素
比如:iPhone6的像素比为2 = 750/375
在这里插入图片描述
在这里插入图片描述
在开发中,UI设计狮以设备像素制作设计图;
前端攻城狮把设备像素按照像素比进行换算,得到CSS像素,以此为单位制作网页

进一步举例理解,在普通屏和2dpr下,css像素和设备像素的情况
在这里插入图片描述
以下两种情况都会带来一定的图片不正常的问题
在这里插入图片描述
在这里插入图片描述
Part 2 关于视口的概念

1、Layout viewport(布局视口)
浏览器默认设置了一个viewport 元标签,定义一个的虚拟视口,用于解决早期的页面在手机上显示的问题。iOS, Android基本都将这个视口分辨率设置为 980px,所以pc上的网页基本能在手机上呈现,只不过元素看上去很小,一般默认可以通过手动触摸方式缩放网页。
2、Visual viewport(视觉视口)
物理屏幕的可视区域,屏幕显示器的物理像素。同样尺寸的屏幕,像素密度大的设备,硬件像素会更多。(如手机屏幕iPhone6为375px)
3、Ideal viewport(理想视口)
通常是我们说的屏幕分辨率

他们之间的关系总结一句话:改变布局视口,让视觉视口达到理想视口
(若小于视觉视口就会出现滚动条)

Part 3 移动端适配的解决方案

一般我们会先在<head>标签中加<meta name=“viewport”>

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

其中,width设置布局视口的宽,initial-scale设置页面的初始缩放程度,maximum-scale设置了页面的最大缩放程度,minimum-scale设置了页面的最小缩放程度,user-scalable即是否允许用户对页面进行缩放操作

下面介绍几种更好的适配方案,重点来了!!!
1、@media媒体查询
具体百度即可查到,不赘述
弊端:要根据不同的手机宽高作穷举,特别对于各种各样的Android手机,要穷举太多

2、淘宝方案flexible.js
淘宝前端团队自己做了一套能适配的flexible.js,这个要在<body>前引入,不需要另外引入<meta name=“viewport”>
弊端:查看源码(源码)可以看到,在flexible.js中1rem=75px,这样我们在开发时要用rem,每次换算都很麻烦,比较除以75很容易除不尽之类的
解决方案:可以将源码改一下,改成width/7.5或者width/10,方便计算

3、动态设置rem
提到上面的改源码,其实质就和这个方法很类似了。这个方法就是我在移动端分辨率自适应问题这篇文章中谈到的,自己写js去动态设置rem,不同的是这里要加<meta name=“viewport”>,附上一段比较完整的js代码
在这里插入图片描述

4、使用vw、vh单位
这是一组新的单位,规定1vw=视口宽度1%;1vh=视口高度1%

弊端:例如设计图是按照750px做的,而元素的宽为600px,那么就要用600/750*100vw=80vw得到我要写在代码中的数值,显然还是一个问题:不好算!
解决方法:可以用CSS预编译器(如less等)先封装一段计算,再去调用这段计算就不需要手动换算

希望以上方法能有点帮助,请指正

(顺带附上各种主流移动设备的参数查询链接,点击这里进入)


http://chatgpt.dhexx.cn/article/HNl9BNZa.shtml

相关文章

移动Web开发实战专栏总结(PPT分享)

以下为我将专栏《移动Web开发实战》重新从不同的角度进行整体的梳理之后&#xff0c;在团队分享的PPT。在这里分享给大家。 写PPT之前&#xff0c;先将要分享的内容用脑图梳理出来&#xff0c;有了框架填内容就比较快了。 1、禁止ios和android用户选中文字 2、禁…

移动web端页面如何调用手机QQ?

文章目录 手机web页面调用手机QQ实现在线聊天的效果方法一&#xff1a;html代码如下&#xff1a;js代码如下&#xff1a; 方法二&#xff1a;代码如下&#xff1a; 效果图截图如下&#xff1a; 统计表1 - 浏览器默认拦截统计表2 - 设备端与协议类型 手机web页面调用手机QQ实现在…

【前端学习笔记】移动web-黑马程序员学习笔记

移动web-黑马程序员学习笔记 1 字体图标2 平面转换2.1 绝对定位元素居中&#xff1a;2.2 双开门效果2.3 旋转效果2.4* 转换原点2.5 多重转换效果2.6 缩放 3* 渐变4 空间转换&#xff08;3D转换&#xff09;4.1 空间位移4.2 透视效果4.3 空间旋转4.4 立体呈现4.5 缩放 5 动画5.1…

移动Web UI组件库汇总

1、 Ant Design Mobile 介绍&#xff1a;一个基于 Preact / React / React Native 的 UI 组件库 组件库地址&#xff1a;https://mobile.ant.design/index-cn 组件库来源&#xff1a;蚂蚁金服体验技术部 2、SUI Mobile 介绍&#xff1a;SUI Mobile 是一套基于 Framework7 开发的…

移动web网页开发——动画

一、动画 1.1 动画 使用animation添加动画效果 思考&#xff1a;过渡可以实现什么效果&#xff1f; 答&#xff1a;实现2个状态间的变化过程 动画效果&#xff1a;实现多个状态间的变化过程&#xff0c;动画过程可控&#xff08;重复播放、最终画面、是否暂停&#xff09…

移动web学习总结

最近学习了些移动web开发的基础知识&#xff0c;稍微做下记录总结&#xff1a; Hello,移动web&#xff1a; https://www.imooc.com/learn/494 一、基础知识 1. 关于Pixel px : CSS px&#xff0c;逻辑像素&#xff0c;浏览器使用的抽象单位dp&#xff0c;pt&#xff1a; dev…

02-移动WEB

网站 favicon 图标 制作 favicon 图标 把图标切成 png 图片 把 png 图片转换为 ico 图标 , 借助第三方平台转换网站 如 https://www.bitbug.net/ favicon 图标放到网站根目录下 HTML 页面引入 favicon 图标 . <link rel"shortcut icon" href"/favicon.ic…

移动web(看这一篇就够了)

文章目录 移动web第一天&#x1f525;今日学习目标字体图标1、字体图标的使用2、购物车案例3、上传SVG矢量图 平面转换1、平面转换概念2、平面转换之位移3、平面转换之旋转4、平面转换之缩放 渐变 移动web第二天&#x1f525;今日学习目标2、透视效果3、空间转换之旋转4、立体呈…

移动web简介

什么是移动web 移动web就是在手机浏览器里面访问的web页面&#xff0c;除了一般的手机浏览器之外&#xff0c;好友一些程序内置的浏览器访问的页面也称之为移动web&#xff0c;例如微信公众号、小程序中的webview访问的页面等。 移动web与PCweb的区别 页面大小不一样。手机页…

什么是web移动端-移动端布局特点

文章目录 前言一、web移动端是什么&#xff1f;二、如何调试移动web网页1.真机调试&#xff1a;2.chrome浏览器调试&#xff1a;3.移动Web的发展历史 三.移动Web布局核心思想1.不允许网页出现横向滚动2.页面盛满屏幕&#xff0c;盒子宽度与屏幕一致 100%3.让盒子的内容宽高widt…

几种java结构图

集合类 IO流 线程池的加载 类与对象的关系 JVM springboot注解

java学习各种实用结构图

spring boot路线图 线程池 网络结构模型

Java基础知识结构图

目前还没有总结完&#xff0c;之后会慢慢进行补充&#xff01;

VGG16详细实现(笨办法)

一、 VGG16简介 VGG16网络是通过卷积和全连接的方式提取图片特征&#xff0c;进行识别一种网络结构。曾在某年取得分类第二&#xff0c;定位任务第一的佳绩。其结构包含&#xff1a; 13个卷积层 3个全连接层&#xff0c;所以被称为VGG16,如下图绿色的部分即是网络的结构组成&…

(Java实现)图片合成GIF动图(“复古”Swing界面)

1、项目简介 项目名称&#xff1a;pic2gif项目实现&#xff1a;将选定的几张图片(支持jpg&#xff0c;png&#xff0c;bmp&#xff0c;gif等) 合成为一张gif图关键字&#xff1a;图片处理&#xff0c;Java&#xff0c;Swing 2、项目结构 图片处理部分Swing界面部分 (u1s1, S…

图解 JVM 内存结构

文章目录 JVM 内存结构JVM包含哪几部分&#xff1f;在内存中 java 代码的执行的流程Java内存分布&#xff1a;各组件详细说明1. 程序计数器2. Java虚拟机栈3. 本地方法栈4. Java堆5. 方法区6. 运行时常量池7. 直接内存 总结问题那些区域会发生内存溢出&#xff1f;类存放在哪里…

JVM8基础结构图理解

目录 1 理解DOS里面的java命令 2 JVM内存 2.1 JVM主要组成部分 2.2 JVM内存(运行时数据区域) 2.2.1 虚拟机内存与本地内存区别 2.2.2 JVM内存(运行时数据区域)中的JVM内存 2.2.3 程序计数器(Program Counter Register) 2.2.4 虚拟机栈(JVM Stacks) 2.2.5 本地方法栈(N…

java绘制(可视化)树结构图

以JPanel组件为画板&#xff0c;继承JPanel类并重写paint(Graphics g)函数&#xff0c;在函数中使用画笔g绘制树结构图。 实例代码——3个java源文件&#xff1a;Main.java、DrawNode.java、DrawTree.java 1、Main.java package drawTree;public class Main {public static …

Java的理论知识以及结构图

Java基础 1、 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目&#xff0c;其原先目的是&#xff1a;为家用消费电子产品发送一个信息的分布式代码系统&#xff0c;通过发送信息控制电视机、冰箱等 2、 简单写出Java特点&#xff0c;写出5个以上&#xff0c;越多越好…

Swagger使用教程及Swagger增强工具knife4j

标题 课外知识须知什么是swagger什么是RESTful 面向资源URI和URL区别&#xff1a; 博址推荐SpringBoot集成SwaggerSwagger常用注解Swagger增强工具knife4j 重点掌握&#xff1a;编写swagger的配置文件&#xff0c;理解每个配置的作用 课外知识须知 Swagger官网&#xff1a; …