移动端适配方案总结

article/2025/9/18 19:21:49

目录

    • 一、背景介绍
      • 1.1 为什么要进行移动端适配
      • 1.2 移动端适配方案
    • 二、rem方案
      • 2.1 什么是rem
      • 2.2 怎么根据屏幕尺寸设置根元素html的font-size
      • 2.3 postcss-pxtorem
    • 三、viewport方案
      • 3.1 什么是viewport方案
      • 3.2 postcss-px-to-viewport
    • 四、总结(如果只想看实现步骤可跳过前面直接看本节)
      • 4.1 rem方案实现步骤总结
      • 4.2 viewport方案实现步骤总结
    • 五、参考链接

一、背景介绍

1.1 为什么要进行移动端适配

移动端设备的尺寸很多,而UI设计稿一般只会基于一个尺寸(一般是750px)进行设计。假如开发人员完全基于该设计稿进行开发,就会出现一种现象,在不同尺寸的设备上,页面的展示效果各不相同,甚至可能出现布局错乱或者出现横向滚动条等情况。因此,开发人员就需要考虑如何让页面内容能够自适应设备尺寸,在设备尺寸较大时内容大一些,设备尺寸小的时候内容也能缩小,让页面在不同的设备尺寸下尽量呈现一致的展示效果。

1.2 移动端适配方案

目前流行的移动端适配方案有两种,rem和viewport,由于viewport单位得到众多浏览器的兼容,现在更多的人推荐使用viewport方案来解决移动端适配问题。下面将对这两个方案做一个大致的介绍。

二、rem方案

2.1 什么是rem

rem是一个相对于页面根元素html的font-size的一个单位,举个例子,假如设置了根元素html的font-size为18px,那么,1rem 等于 18px。由此可知,rem的大小是会随着根元素html的font-size的改变而改变的。rem方案就是利用了这一点,根据不同的屏幕尺寸,来设置不同的根元素html的font-size的大小,以此来达到适配不同屏幕尺寸的目的。

2.2 怎么根据屏幕尺寸设置根元素html的font-size

我们可以使用手淘的amfe-flexible插件,该插件会根据不同设备的屏幕宽度来设置font-size值,下面来简单看一下其实现原理。以下代码是该插件源码的一部分,可以看到,它先是获取了设备宽度,然后除以10。这里大概意思是,将设备宽度分为10等份,然后将一等份的大小作为html元素的font-size值,也就是说1rem就会等于设备的1等份大小(前面说了1rem等于html元素的font-size值)。

// ...function setRemUnit () {var rem = docEl.clientWidth / 10docEl.style.fontSize = rem + 'px'}
// ...

现在举个例子,750px设计稿下,divA的宽度为50px,在具体开发中,divA的宽度应该是多少rem呢?在写divA的宽度时,我们需要自行进行计算,将其rem值设为x,代入该式子x:50=1:75,得出x≈0.67rem,所以,我们这样设置divA的宽度:

.divA {width: 0.67rem;
}

可以看出,将设计稿上的px值转换为rem的过程其实是比较繁琐的,接下来介绍下一个能够自动将px转为rem的插件。

2.3 postcss-pxtorem

postcss-pxtorem是一个能将px转换为rem的工具,这样我们在开发过程中只需要参照设计稿,使用px单位进行开发,由该工具帮我们转换成rem单位即可。只需要在postcss.config.js中进行如下配置:

module.exports = {"plugins": {"postcss-pxtorem": {rootValue: 75, // 根据设计图尺寸写,设计图是750,就写75propList: ['*'] // 需要被转换的属性}}
}

如果是使用vant作为移动端开发的组件库,那么就需要注意,vant是基于375写的,而我们开发的设计稿大多750px。所以rootValue设置为75的话,vant的样式就小了一半。通过查阅postcss-pxtorem官网可以知道,rootValue的值可以是number/function,当它是函数的时候,postcss-pxtorem处理每个css文件的时候都会来调用这个函数,且被处理的css文件的相关信息会通过参数形式传递给该函数。因此,我们可以判断是vant文件的样式,还是我们的样式,来决定rootValue的大小。

改写postcss.config.js文件:

module.exports = {"plugins": {"postcss-pxtorem": {rootValue({ file }) {return file.indexOf('vant') !== -1 ? 37.5 : 75;},propList: ['*'] // 需要被转换的属性}}
}

三、viewport方案

3.1 什么是viewport方案

通常viewport是指视窗、视口,即浏览器用来显示网页的那部分区域。在移动端开发中,我们希望页面宽度和设备宽度一致,并把这个viewport称为ideal viewport(理想视口)。我们设置public/index.html添加viewport元数据标签,就是为了得到一个ideal viewport。

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

viewport方案即是使用vw/vh作为样式单位。vw、vh将viewport分成了一百等份,1vw等于视口1%的宽度,1vh等于视口1%的高度。当我们的设计稿是750px时,1vw就等于7.5px。还是用之前那个例子,750px设计稿下,divA的宽度为50px,使用vw作为样式单位,divA的宽度是多少vw呢?还是将divA的宽度设置x vw,代入x:50 = 1:7.5,得到x≈6.67vw。

可以感受到,自行计算的过程相当影响开发进度。所以我们引入了postcss-px-to-viewport插件。

3.2 postcss-px-to-viewport

postcss-px-to-viewport是一个将px单位转换为视口单位(一般就是vw)的 PostCSS 插件。这样我们在开发过程中只需要参照设计稿,使用px单位进行开发,由该工具帮我们转换成vw单位即可。只需要在postcss.config.js中进行如下配置,同样地,使用vant组件库的情况下,需要做兼容处理。

module.exports = ({ file }) => {const vwUnit = file && file.indexOf('vant') !== -1 ? 375 : 750;return {plugins: {'postcss-px-to-viewport': {viewportWidth: vwUnit, // 设计稿的宽度unitPrecision: 5, // 转换后的位数,即小数点位数viewportUnit: 'vw', // 转换成的视窗单位propList: ['*'], // 要进行转换的属性,如果某个属性不进行转换,只需在其前加个“!”即可selectorBlackList: [], // 不进行转换的选择器minPixelValue: 1, // 小于或等于1px则不进行转换mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false},},};
};

四、总结(如果只想看实现步骤可跳过前面直接看本节)

4.1 rem方案实现步骤总结

  1. 安装插件
npm install amfe-flexible --save
npm install postcss-pxtorem --save-dev
  1. 在main.js中引入amfe-flexible
import 'amfe-flexible';
  1. 在postcss.config.js文件中配置postcss-pxtorem
module.exports = {"plugins": {"postcss-pxtorem": {rootValue({ file }) {return file.indexOf('vant') !== -1 ? 37.5 : 75;},propList: ['*'] // 需要被转换的属性}}
}
  1. public/index.html添加viewport元数据标签,使页面宽度和设备宽度一致
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"><!--
含义如下:
* width=device-width:视口宽度和设备保持一致
* initial-scale=1:视口的默认缩放比例1.0
* maximum-scale=1:最大缩放比例1.0
* minimum-scale=1:最小缩放比例1.0
* user-scalable=no:不允许用户自行缩放
-->
  1. 执行上述步骤之后,就可以使用px进行开发了,在页面控制台可以看到,px单位自动被转换成了rem单位。

在这里插入图片描述
在这里插入图片描述

4.2 viewport方案实现步骤总结

  1. public/index.html添加viewport元数据标签,使页面宽度和设备宽度一致
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
  1. 安装插件
npm install postcss-px-to-viewport --save-dev
  1. 在postcss.config.js文件中配置postcss-px-to-viewport
module.exports = ({ file }) => {const vwUnit = file && file.indexOf('vant') !== -1 ? 375 : 750;return {plugins: {'postcss-px-to-viewport': {viewportWidth: vwUnit, // 设计稿的宽度unitPrecision: 5, // 转换后的位数,即小数点位数viewportUnit: 'vw', // 转换成的视窗单位propList: ['*'], // 要进行转换的属性,如果某个属性不进行转换,只需在其前加个“!”即可selectorBlackList: [], // 不进行转换的选择器minPixelValue: 1, // 小于或等于1px则不进行转换mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false},},};
};
  1. 执行上述步骤之后,就可以使用px进行开发了,在页面控制台可以看到,px单位自动被转换成了vw单位。

在这里插入图片描述
在这里插入图片描述

五、参考链接

  • viewport移动端适配
  • 移动端适配解决方案

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

相关文章

移动端适配的几种方式

百分比适配方式 这种方法&#xff0c;只是宽度能适配&#xff0c;高度不能适配&#xff0c;只能设置某个高度固定死 需求&#xff1a;是四个div高度为100px&#xff0c;宽度等宽横向排列 <!DOCTYPE html> <html lang"en"> <head><meta chars…

.移动端适配的解决方案

何为移动端适配 移动端适配就是值在不同的移动端 可以去讲我们的内容适应不同屏幕尺寸大小 我们之前写单位用的是px这个单位 但是这是一个写死的单位 rem 所以我们用一个可变的单位 rem &#xff08;是指用html字体大小作为单位 比如说我们设置html字体大小为16px 那么 …

移动web适配

当屏幕宽度发生变化时&#xff0c;页面元素的尺寸&#xff08;宽度和高度&#xff09;也会随之变化&#xff0c;为更好的达到适配效果&#xff0c;用户体验更好&#xff0c;百分比布局 和 Flex布局 是有缺陷的&#xff0c;不能完成最终的适配。想要解决检测屏幕大小的问题&…

FTP-Web端如何直接访问FTP资源

ftp客户端工具&#xff1a;iis7服务器管理工具 IIs7服务器管理工具可以批量管理ftp站点&#xff0c;同时具备定时上传下载的功能。 作为服务器集成管理器&#xff0c;它最优秀的功能就是批量管理windows与linux系统服务器、vps。能极大的提高站长及服务器运维人员工作效率。同…

移动端适配的理解和各种方案解析(详解)

-&#x1f482; 个人网站:【紫陌】【笔记分享网】&#x1f485; 想寻找共同学习交流、共同成长的伙伴&#xff0c;请点击【前端学习交流群】 前言&#xff1a;最近在弄移动端项目&#xff0c;记录一下移动端的应用方案。对各个方案的解决理解。 目录 1.什么是移动端适配 2.理解…

手机上安装FTP客户端软件(AndFTP),实现通过手机访问计算机FTP服务器

服务器连接工具&#xff1a; IIS7服务器管理工具是一款windows全系下用于连接并操控基于windows和linux系统的VPS、VNC、FTP等远程服务器、云服务器的管理工具。 界面简单明了&#xff0c;操作易上手&#xff0c;功能强大&#xff0c;支持批量导入服务器&#xff0c;并批量打开…

pc端与移动端适配 解决方案

一般网站实现pc端与移动端适配的需求&#xff0c;方案有两个&#xff1a; 1、一套页面&#xff0c;从设计时就考虑到跨设备适配&#xff0c;响应式的一步到位&#xff1b; 2、开发两套页面&#xff0c;根据设备尺寸加载加载不同的资源&#xff0c;目前已经不常见了&#xff1…

【14.HTML-移动端适配】

移动端适配 1 布局视口和视觉视口1.1 设置移动端布局视口宽度 2 移动端适配方案2.1 rem单位动态html的font-size&#xff1b;2.2 vw单位2.3 rem和vw对比2.4 flex的弹性布局 1 布局视口和视觉视口 1.1 设置移动端布局视口宽度 避免布局视口宽度默认980px带了的缩放问题,并且禁止…

移动端常见适配方案

基础 网上已经有非常多的基础知识总结&#xff0c;不再赘诉&#xff0c;详情可以见 《关于移动端适配&#xff0c;你必须要知道的》 《不要再问我移动适配的问题了》 其中容易搞混的概念是视口 <meta name"viewport" content"widthdevice-width,user-sc…

FTP服务应用(手机端与电脑端无线传输)

FTP服务应用&#xff08;手机端与电脑端无线传输&#xff09; 准备工具&#xff1a;Android手机.KSWEB软件。 1.利用Android手机.打开移动网络共享。 2.电脑连上WiFi热点。 3.Android手机安装KSWEB软件&#xff0c;并打开FTP服务器。 4.在KSWEB软件左划到FTP模块&#xff0c;将…

移动端适配方案有哪几种?

虽然我们课程明确的区分各种移动端适配方案&#xff0c;但依然有很多同学搞不清楚移动端等比适配和响应式&#xff0c;这里对移动端主流适配方案给大家做一个分析。 移动端适配是指同一个页面可以在不同的移动端设备上都有合理的布局。主流的实现方案有两种&#xff1a; 响应…

solr简介和使用

一、搜索功能的流行方案 由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择: 1、基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。 2、调用Google、Baidu的…

solr 安装和使用

Solr是基于ApacheLucene构建的流行、快速、开源的企业搜索平台 Solr具有高度可靠性、可扩展性和容错性&#xff0c;提供分布式索引、复制和负载平衡查询、自动故障切换和恢复、集中配置等功能。Solr为许多世界上最大的互联网站点提供搜索和导航功能 环境准备 linux centos7 ja…

什么是Solr,它能为我们解决什么问题,怎么用?

一. 什么是Solr? 其实我们大多数人都使用过Solr,也许你不会相信我说的这句话,但是事实却是如此啊 ! 每当你想买自己喜欢的东东时,你可能会打开某宝或者某东,像这样一搜,就能搜到很多东西,你知道你看到的这些数据都来自哪儿吗?百度一下你就知道!这些数据来自哪儿吗?等你了解…

solr实现原理

solr那是我1年前使用到的一个搜索引擎&#xff0c;由于当初对于配置了相应了&#xff0c;但是今天突然面试问到了&#xff0c;哎&#xff0c;太久了&#xff0c;真的忘记了&#xff0c;今天特地写一篇博客记下来 solr是一个独立的企业级搜索应用服务器&#xff0c;它对外t提供…

solr的使用详解

一、Solr简介 由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求&#xff0c;目前在实现搜索引擎的方案上有几种方案可供选择&#xff1a; 基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大&#xff0c;不采用。 调用Go…

solr基础理解和功能分析

一、solr概述 Solr是一个开源搜索平台&#xff0c;用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。Solr是一个可扩展的&#xff0c;可部署&#xff0c;搜索/存储引擎&#xff0c;优化搜索大量以文本为中心的数据。 二、solr管理界面功能 1.Logging 展示Solr的日…

Solr基本概念

Solr是一种开放源码的、基于Lucene的搜索服务器。它易于安装和配置&#xff0c;而且附带了一个基于HTTP 的管理界面。 官网&#xff1a; http://lucene.apache.org/solr/ Solr全文检索基本原理&#xff1a; http://www.importnew.com/12707.html 相关概念&#xff1a; Core: …

Solr 原理、API 使用

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; 搜索引擎&#xff1a;Elasticsearch、Solr、Lucene ELK中的ES&#xff1a;ElasticsearchSolrCloud 的搭建、使用Solr 高亮显示Spring Data Solr …

Solr的工作原理

1. Solr的简介 ​ Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到…