我的编程空间,编程开发者的网络收藏夹
学习永远不晚

常见的移动端前端适配方案分享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

常见的移动端前端适配方案分享

今天小编给大家分享的是常见的移动端前端适配方案分享,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

在网上搜了一下,很多面试都会被问到移动端适配方法的问题,最近看了一些文章,这里总结一下。

首先,谈一下目前为止出现的一些关于移动端适配的技术方案:

  • (1)通过媒体查询的方式即CSS3的meida queries

  • (2)以天猫首页为代表的 flex 弹性布局

  • (3)以淘宝首页为代表的 rem+viewport缩放

  • (4)rem 方式

1.Media Queries

meida queries 的方式可以说是我早期采用的布局方式,它主要是通过查询设备的宽度来执行不同的 css 代码,最终达到界面的配置。核心语法是:

@media screen and (max-width: 600px) {   }

优点

  • media query可以做到设备像素比的判断,方法简单,成本低,特别是对移动和PC维护同一套代码的时候。目前像Bootstrap等框架使用这种方式布局

  • 图片便于修改,只需修改css文件

  • 调整屏幕宽度的时候不用刷新页面即可响应式展示

缺点

  • 代码量比较大,维护不方便

  • 为了兼顾大屏幕或高清设备,会造成其他设备资源浪费,特别是加载图片资源

  • 为了兼顾移动端和PC端各自响应式的展示效果,难免会损失各自特有的交互方式

2.Flex弹性布局

以天猫的实现方式进行说明:

它的viewport是固定的:<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

常见的移动端前端适配方案分享

高度定死,宽度自适应,元素都采用px做单位。

随着屏幕宽度变化,页面也会跟着变化,效果就和PC页面的流体布局差不多,在哪个宽度需要调整的时候使用响应式布局调调就行(比如网易新闻),这样就实现了『适配』。

3.rem + viewport 缩放

这也是淘宝使用的方案,根据屏幕宽度设定 rem 值,需要适配的元素都使用 rem 为单位,不需要适配的元素还是使用 px 为单位。(1em = 16px)

PS:rem
rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?
区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对
大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁
反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一
个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。比如:p{font-size:14px;font-size:0.875rem;}
(推荐一个单位转换的工具:http://pxtoem.com/)

实现原理

根据rem将页面放大dpr倍, 然后viewport设置为1/dpr.

如iphone6 plus的dpr为3, 则页面整体放大3倍, 1px(css单位)在plus下默认为3px(物理像素)
然后viewport设置为1/3, 这样页面整体缩回原始大小. 从而实现高清。 

常见的移动端前端适配方案分享 

常见的移动端前端适配方案分享 

这样整个网页在设备内显示时的页面宽度就会等于设备逻辑像素大小,也就是device-width
这个device-width的计算公式为:设备的物理分辨率/(devicePixelRatio * scale)
在scale为1的情况下,device-width = 设备的物理分辨率/devicePixelRatio

4、rem实现

比如说“魅族”移动端的实现方式,viewport也是固定的:

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

通过以下代码来控制rem基准值(设计稿以720px宽度量取实际尺寸)

!function (d) {    var c = d.document;    var a = c.documentElement;    var b = d.devicePixelRatio;    var f;    function e() {      var h = a.getBoundingClientRect().width, g;      if (b === 1) {        h = 720      }      if(h>720) h = 720;//设置基准值的极限值      g = h / 7.2;      a.style.fontSize = g + "px"    }    if (b > 2) {      b = 3    } else {      if (b > 1) {        b = 2      } else {        b = 1      }    }    a.setAttribute("data-dpr", b);    d.addEventListener("resize", function () {      clearTimeout(f);      f = setTimeout(e, 200)    }, false);    e()  }(window);

css通过sass预编译,设置量取的px值转化rem的变量$px: (1/100)+rem;

常见的移动端前端适配方案分享

1像素边框高清

1.淘宝实现方式

上面说到的淘宝的实现方式即rem+viewport 缩放来实现。

transform: scale(0.5)

CSS代码:

div{    width: 1px;    height: 100%;    display: block;    border-left: 1px solid #e5e5e5;    -webkit-transform: scale(.5);    transform: scaleX(.5);}

缺点:

圆角无法实现,实现4条边框比较麻烦,并且只能单独实现,如果嵌套,会对包含的效果产生不想要的效果,所以此方案配合:after和before独立使用较多。

box-shadow

实现方法:

利用CSS对阴影处理的方式实现0.5px的效果。

-webkit-box-shadow:0 1px 1px -1px rgba(0, 0, 0, 0.5);

优点:

基本所有场景都能满足,包含圆角的button,单条,多条线。

缺点:

颜色不好处理, 黑色 rgba(0,0,0,1) 最深的情况了。有阴影出现,不好用。
大量使用box-shadow可能会导致性能瓶颈。
四条边框实现效果不理想。

2.图片实现

使用 background-image 实现1px有两种方式: 渐变 linear-gradient 或直接使用图片(base64)。

渐变 linear-gradient (50%有颜色,50%透明)

单条线:

div{    height: 1px;    background-image:-webkit-linear-gradient(top,transparent 50%,#000 50%);    background-position: top left;    background-repeat: no-repeat;    background-size: 100% 1px;}

多线条:

div{    background-image: -webkit-linear-gradient(top,transparent 50%,#000 50%),    -webkit-linear-gradient(bottom, transparent 50%, #000 50%),    -webkit-linear-gradient(left, transparent 50%, #000 50%),    -webkit-linear-gradient(right, transparent 50%, #000 50%);    background-size: 100% 1px,100% 1px,1px 100%,1px 100%;    background-repeat: no-repeat;    background-position: top left, bottom left, left top, right top;

优点:
可以设置单条,多条边框
可以设置颜色

缺点:
大量使用渐变可能导致性能瓶颈
代码量大
多背景图片有兼容性问题

关于常见的移动端前端适配方案分享就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

常见的移动端前端适配方案分享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

常见的移动端前端适配方案分享

今天小编给大家分享的是常见的移动端前端适配方案分享,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。在网上搜了一下,很多面试都会被问到移动端适配方法的问题,最近看了一些文章,这里总结一下
2023-06-08

前端开发中移动端适配的示例分析

这篇文章主要介绍了前端开发中移动端适配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、百分比使用场景:只要求宽度随屏幕自适应,比如文字块百分比在PC端自适应上也经
2023-06-08

关于移动端与大屏幕自适应适配方案

这篇文章主要介绍了关于移动端与大屏幕自适应适配方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

解决移动端响应式布局常见问题的方案

移动端响应式布局的常见问题及解决方案随着移动互联网的快速发展,越来越多的人开始使用移动设备访问网页,这也给网页设计师带来了新的挑战。为了适应不同设备的屏幕尺寸,移动端响应式布局成为了一种流行的设计趋势。然而,在实际应用中,我们经常会遇到一
解决移动端响应式布局常见问题的方案
2024-01-29

vue实现移动端适方案的完整步骤

现在的手机五花八门,造就了移动端窗口分辨率繁多的局面,在不同分辨率的屏幕下保持与UI图一致的效果,就成了让前端不得不头疼的问题,下面这篇文章主要给大家介绍了vue实现移动端适方案的相关资料,需要的朋友可以参考下
2022-11-13

移动端h5页面根据屏幕适配的示例分析

小编给大家分享一下移动端h5页面根据屏幕适配的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法一:引入淘宝开源的可伸缩布局方案引入淘宝开源的可伸缩布局方
2023-06-09

web前端:常见的移动web问题,终端触摸交互,各种bug坑如何解决

编程学习网:web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思。现广泛译作网络、互联网等技术领域。表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)、超文本传输协议(HTTP)等。
web前端:常见的移动web问题,终端触摸交互,各种bug坑如何解决
2024-04-23

好程序员web前端分享用JavaScript实现的5个常见函数

好程序员web前端分享用JavaScript实现的5个常见函数,在学习JavaScript,或者前端面试中,有人会问你节流函数、防抖函数、递归函数等,本文分享了5个常见函数,希望对大家有所帮助。 在 JavaScript 中有一些问题会被拿
2023-06-03

VUE移动端开发的常见问题及解决方案:轻松解决开发难题

VUE移动端开发中难免会遇到各种各样的问题,本文总结了一些常见的VUE移动端开发问题及解决方案,希望能够帮助大家轻松解决开发难题。
VUE移动端开发的常见问题及解决方案:轻松解决开发难题
2024-02-27

web前端:深度分析HTML5在移动开发方面的发展状况

编程学习网:移动开发也称为手机开发,或叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,因此,业内也称作为无线开发。
web前端:深度分析HTML5在移动开发方面的发展状况
2024-04-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录