移动端适配

前沿:
移动端web页面的开发,由于手机屏幕尺寸、分辨率不同,或者需要考虑横竖屏问题,为了使得web页面在不同移动设备上具有相适应的展示效果,需要在开发过程中使用合理的适配方案来解决这个问题。

基础概念
俗称看看就行

这个才是正文!!!!
1.width=device-width(设备宽度)或者 value
设置Html宽度(一般与设备的宽度一致)
由于每个设备的宽度不同所以在刚进入到页面一开始的时候就把最大宽度设置为设备宽度

<meta name="viewport" content="width=device-width">

虽然现在设备宽度为 375px但是 由于设置的宽度为400 所以最外面的宽度就为400px

content="width=400"

2.user-scalable =默认值为yes 可设置为no
设置用户是否可以进行缩放 一般设为no(不允许缩放)
如果设置了不允许缩放 minimum-scale(最小缩放比例) 和maximum-scale(最大缩放比例) 无效
3.initial-scale= 1.0
初始化缩放比例
4.minimum-scale= 1.0
最小缩放比例
5.maximum-scale= 1.0
最大缩放比例

6.devicePixelRatio(dpr)
像素比

首先咱们需要了解 几个知识点
设备像素(物理像素) css像素(逻辑像素)
设备像素是设备的固定属性出场就有的
css像素就是在css样式中自己设置的,是一个抽象的并不存在的

设备像素/css像素=像素比(dpr)

px在移动端不好适配原因:
在PC端一般来说1px(物理像素)=1px(css像素),但是移动端不一定是,css中px 是抽象的,在不同的环境或者设备中1px它所代表的设备像素是不同的,比如物理像素 1200px ,100px就是 12:1 如果物理像素是1000px,100px就是10:1。那么1px大小 在不同设备上显示的大小也不同
不同设备的dpr不同

获取像素比
window.devicePixelRatio

像素比是几就相当于我放大几倍看这个物品
比如说,同一个网站从苹果4 来看或者苹果3来看 体验不一样
苹果4来看清晰度比苹果3高 (苹果4像素比比苹果3高)
像素比越高 清晰度越好

7.Viewport
手机浏览器默认为我们做了两件事
1.页面渲染在一个980px的viewport
2.缩放
为什么要有Viewport?
一个300像素的屏幕里放一个1000多像素的页面会混乱,所以要虚拟一个980像素的页面中,进行缩放

8.rem
rem是一个相对单位 类似于em(相对于父亲的字体大小) (root em,根 em) 啥是根呢 就是 html 也就可以理解 相对于html 的单位

浏览器默认的html font-size=16px
如果我们要设置字体大小为 12px
12/16=0.75 所以要设置 font-size:0.75 rem
移动端rem的设置
1.在默认浏览器之中 html的 font-size:16px 所以 1rem=16px
假如 设计师 给我一个元素 大小为100px 那我就在页面上写的是 100/16 rem
我们看 100/16除不开 所以 我们可以更改 html 的font-size大小 html{font-size:10px}
那么我们的 1rem=10px
在设置htm字体大小之前 先将字体重置一下
html{font-size:100%(也就是16px)}
那么
html{font-size:62.5%(也就是10px)}
这样就把 1rem =10px
那我们这就好搞了,假如我们亲爱的设计师给我们一个 20px的元素,
那我们直接 20/10 =2rem

rem的优点:
可以通过修改html里面的文字大小来改变,页面中元素的大小,可以整体控制。
那我们怎么 根据不同设备的大小修改html里面的 文字大小
9.媒体查询 (@media)
使用@media查询,可以针对不同媒体类型定义不同的样式
使用@media查询,可以针对不同媒体尺寸定义不同的样式

使用方法

/*
@media 声明媒体查询
mediatype 媒体类型(手机、平板、电脑。。)
and|not|only 多个媒体类型的 组合 and(和) not(不包括)only(仅仅)
media feature 媒体尺寸
*/
@media mediatype and|not|only (media feature) {
/* css样式 */
}

mediatype的值
all 用于所有设备
print 用于打印机和打印预览
scree 用于电脑屏幕、平板电脑、智能手机等
media feature的值
max-width:800px 最大尺寸 相当于 小于等于800px时的样式

min-width:600px 最小尺寸 相当于 大于等于600px 时的样式

width:400px 等于400px时的 样式

10.媒体查询和rem共同使用
根据不同的屏幕区间 调整html的 font-size 从而实现不同设备下 元素的显示大小

@media (max-width: 800px) {
html {
font-size: 20px;
}
}
@media (min-width: 100px) {
html {
font-size: 10px;
}
}

当我们的屏幕尺寸好多的时候 并且我们的 内容特别多的时候 我们就需要 根据媒体查询 来引入 不同的css文件

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="xxx.css">

11.rem适配方案
1.让一些不能等比例适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备
2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html的font-size发生变化时,元素尺寸也发生变化,从而达到等比缩放适配

rem实际开发时的适配方案
1.按照设计稿与设备宽度的比例,动态计算并设置html的font-size (媒体查询)
2.css中,设计稿元素的宽、高、定位等取值,按同等比例换算出rem为单位的值

rem适配方案技术运用(市场主流)
技术方案1 (我就不会 我就不用 我也不想用)
Less+媒体查询+rem
技术方案2(推荐) 可以直接引入js 我都不需要知道他的代码啥意思 你说我用哪个??
flexible.js+rem
我们直接来使用第二种方案
12.flexible.js+rem 适配方法
先来一个特别烦人的介绍吧
这是一个简洁高效的rem适配方案 flexible.js
这个东西是手机淘宝团队出的 (一听淘宝出得,就感觉牛逼)
我们原来适配需要用媒体查询,烦死了,现在好了,不用了 我直接把flexible.js引进来就省得做了

那这玩意是啥原理啊
好的我们不废话了
他的原理是 把设备分为10等份,你肯定想说,那我设备不一样,分成10份也不一样啊,
没事 只要他的比例一样就可以
这10等份的比例 是一致的

我们要做的就是把我们设备的 html的font-size 设置好就行了

比如说 我们的设计稿是 750px(一般来说设计师以苹果6宽度作为标准尺寸) 那我们只需要把 html的 font-size 设置为 75px (750/10) 就可以了
所以在苹果 6 7 8 设计稿为750像素里 1rem=75px
里面元素rem值= 元素的px值/75
剩下的就交给flexible.js

你懵逼了吗? 哈哈哈哈哈 我也懵逼了 没关系 理论上我们了解一下就好,最主要是实践
我们先下载一个 flexible.js 我已经提前帮你们下好了在文件夹里

13.flexible.js+rem 适配实际使用
前期准备
flexible.js
设计稿(750px)
1.引入视口标签

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

2.引入flexible.js

<script src="./flexible.js"></script>

3.可以把我们的初始化样式css文件引进去

<link rel="stylesheet" href="初始化.css">

完成后
我们打开页面 看一下是否成功引入 flexible.js
flexible.js 把设备分为10等分
我们打开苹果6 7 8 屏幕宽度像素 是375px 那我们的 html的 font-size:37.5px

是吧 我们就不用媒体查询了 是不是特别简单

那我们的body{width:10rem;max-width:750px;margin:0 auto;}
充满屏幕 最大值750 设计稿宽度 居中
width:10rem; 是因为我们在手机上呈现的比例和设计稿呈现的比例需要一样
设计稿 分为十等份 750px/10=75px 每一份就是75px 反过来来说
设备宽度 也就是body的宽度 就是 750px /75px=10rem

那我们里面的元素 不可能每次都口算吧 所以
我们这里有一个插件 vscode中的一个插件 叫做 cssrem
cssrem插件用于 px=>rem

如何安装cssrem
下一页里两个图

我们使用之前先找到 cssrem插件的设置
Cssrem插件里 fontsize 默认大小为16px
我们需要按照设计图尺寸计算出1rem=75px
所以把第一个设置 16改为 75 咱们就可以愉快的使用了 开不开心 意不意外

但是!!!!我们的设计图必须 为750px 的时候 1rem=75px 其他的 还得换算一下才能使用!!!!
我们就可以 看设计稿 里面一个元素 宽度如果是 100px 那我们直接写 width:100px
他直接就给我们换算了

什么破玩意 移动端屏幕适配 就是这么简单 啥也不是 散会 !

更新更新!
下面是介绍flexible.js在vue-cli中如何使用
首先在vue-cli中使用flexble.js你得会搭vue的脚手架吧 不会的去网上学学

当我们搭建完脚手架之后
1.安装lib-flexible.js

npm install lib-flexible --save

2.在项目入口文件main.js中引入lib-flexible

import 'lib-flexible/flexible.js'

当我们安装并且引入完flexible.js 后 再结合我们上面介绍的cssrem 那个插件就可以直接使用了

啥!!!你还不知道咋用??????
行!我们实际操作一下

我们先找一个750的设计图 一般来说我们的UI设计师的图都是按照苹果6、7、8来做的
然后我们看一下 下面第二个图 我想要做下面小的方块让他适配

那我们假如写这个方块的宽高、我们就在页面画一个 div

因为 我们之前已经把 cssrem定义好了 没定义的 看看前面的文章

那我们 宽度 690px直接 就转换成 9.2rem了 高度也一样 158px 转换成 2.106669rem

然后就可以了

在苹果6

苹果5/se

这样就可以适配了
其他的元素也可以这样适配

不就这个吗!!其他注意事项 下一节在写

移动端适配+flexible.js+rem适配相关推荐

  1. 淘宝flexible.js+rem适配pc端

    1.引入flexible.js文件: (function flexible(window, document) {var docEl = document.documentElement;var dp ...

  2. 移动端(五)flexible.js + rem适配布局

    rem适配方案flexible.js github地址:https://github.com/amfe/lib-flexible flexible.js 是手机淘宝团队出的移动端布局适配库 不需要在写 ...

  3. flexible.js+rem解决pc端适配

    第一步:新建 flexible.js文件 这里默认是10等份,手动改为24,此时1rem=1920/24px即80px.(设计稿是1920px的) (function flexible(window, ...

  4. 移动端适配-flexible.js使用(解决对外部引入css,px2rem能不能转换rem问题)

    移动端flexible.js 适用于最新版vue-cli,配置手淘的lib-flexible.js和rem实现移动端页面自适应 1.安装lib-flexible.js npm install lib- ...

  5. 移动端适配--flexible.js

    引言: H5适配一直是一个比较普遍的问题,很多文章都会讲,最近开发了一个H5的项目使用了一下淘宝的 flexible.js,写一篇文章自己总结一下. 一.背景介绍: Flexible.js是淘宝公开的 ...

  6. 移动端适配flexible.js

    1.什么是flexible.js 是一个终端设备适配的解决方案. 是一个用来适配移动端的javascript框架.根据宽度的不同设置不同的字体大小,样式间距都使用rem作为单位,不同屏幕大小适配不同的 ...

  7. vue 移动端适配flexible.js使用方法

    原理: flexible.js 适配方案采用rem布局,根据屏幕分辨率大小不同,调整根元素html的font-size,从而达到每个元素宽高自动变化,适配不同屏幕 操作步骤: 1.安装lib-flex ...

  8. 屏幕适配Flexible.js

    flexible + cssrem\px2rem插件+ flex布局实现屏幕自适应布局 1.下载flexible插件 https://wws.lanzoui.com/iMpclv6bmni 2.引入到 ...

  9. 移动端之flexible.js

    flexible.js 弹性布局分析与实战 作为一名小白,不思进取,还荒废了好长一段时间,一直没有总结学习,内心很愧疚...从这周开始,坚持每周积累自己的笔记,努力学习,成为一名合格的攻城狮! fle ...

最新文章

  1. 【其它】我博客的个性化代码
  2. 数学图形(2.23)Cylindric sine wave柱面正弦曲线
  3. 电脑显示器变色_流光溢彩电竞出击:飞利浦猛腾M1系列电竞显示器275M1RZ
  4. 最新android 手机型号,各大安卓手机厂商Android 10系统更新汇总,你的机型支持吗?...
  5. 公需科目必须学吗_专业技术人员一般公需科目学习的通知
  6. SpringBoot2 整合JTA组件,多数据源事务管理
  7. 45个非常有用的Oracle查询语句(转自开源中国社区)
  8. Mac上的文件拖拽增强工具space drop如何使用?
  9. 基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注
  10. 移动电源快充QC3.0方案芯片IP5318快充方案
  11. 计算机毕业设计JAVA图书个性化推荐系统mybatis
  12. 模拟qq邮箱mysql数据库_后台管理系统3.0(SrpingBoot+MySQL)界面仿QQ邮箱源代码
  13. 文献管理软件Mendeley优缺点分析
  14. 游戏史上最伟大的10位制作人(图)
  15. macos系统镜像iso_我们一起来安装----虚拟机安装macOS
  16. 信号偏移成为边界地区呼吸的痛
  17. java的逻辑常量_在Java语言中,逻辑常量只有true和(__)两个值;
  18. (七)通过pygame来设置飞机大战中 敌机 的速度、位置等
  19. Unity 水体效果模拟
  20. 《大道至简 第二章》读后感

热门文章

  1. 德国亚琛大学计算机排名,德国大学排名,2021德国大学各大专业排名
  2. C语言实现从字符串s中删除所有字符c
  3. HTML5期末考核大作业、HTML个人主页界面设计源码
  4. 291计算机毕业设计
  5. 当微软谈AI时,我似乎忘了还有其它人工智能公司
  6. 你对spring是如何理解的?
  7. word打字自动删除后面的字的原因
  8. 如何高效率学习R?[转自微信:R语言中文社区]
  9. ffmpeg命令分析-segment
  10. 分层架构图怎么做,先收藏了