位置: IT常识 - 正文

移动端适配方案有哪几种?(移动端适配方案面试题)

编辑:rootadmin
移动端适配方案有哪几种?

推荐整理分享移动端适配方案有哪几种?(移动端适配方案面试题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:移动端适配方案怎么设置,移动端适配方案rem具体流程,移动端适配方案有哪些,前端移动端适配方案,移动端适配方案有哪些,移动端适配方案有哪些,移动端适配方案有哪些,移动端适配方案阮一峰,内容如对您有帮助,希望把文章链接给更多的朋友!

虽然我们课程明确的区分各种移动端适配方案,但依然有很多同学搞不清楚移动端等比适配和响应式,这里对移动端主流适配方案给大家做一个分析。

移动端适配是指同一个页面可以在不同的移动端设备上都有合理的布局。主流的实现方案有两种:

响应式布局,通过@media实现一套html配合多套css实现适配;通过rem或者vw,vh等实现不同的设备俺照相同的比例适配;例子

这里给大家列举几个例子:

小米移动端商城,很明显是采用了rem等比适配的方案。

        2. 不凡官网,采用了@media媒体监听实现适配。

        3.  王者荣耀,同时采用了媒体监听和rem等比适配。

 4. vh,vm 暂时没找到。

实现原理

首先需要了解一个概念:viewport 视口(mdn)。如果要实现浏览器适配移动端,首先我们要统一标准视口。在html的head中添加以下代码:

<meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, user-scalable=no">第一种:rem实现原理

rem是一个倍数单位,它是基于html的font-size的倍数。只要我们在不同的设备上设置一个合适的初始值,当设备发生变化font-size就会自动等比适配大小,从而在不同的设备上表现统一。

比如说:移动端设计稿一般会以750px进行交付,而手机实际像素可能是375px。那么一般我们会以设备宽度的1/10作为初试html的font-size大小,当然这个值是动态的,在不同设备上得到的值不同。

移动端适配方案有哪几种?(移动端适配方案面试题)

比如有的设备宽度是375px,那么html初始font-size就是37.5px,如果设备宽度是300px,那么font-size就是30px。 因为内容都是rem基于font-size的倍数,所以不同宽度的设备上都是等比显示的。

注意:这个font-size基数到底是不是设备的1/10是没有统一论调的,你可以用1/n任意定义。关键是理解rem适配的原理是元素等比缩放。

参照具体代码:

<!DOCTYPE html><!-- 0. 注意:font-size是动态设置,宽度为屏幕1/10 --><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- 1. 标准视口,禁止缩放,初始缩放为1 --> <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, user-scalable=no"> <title>移动视口</title> <style> *{ margin: 0; padding: 0; } .box{ /* 4. 如果原稿宽度是750px,而且在750宽度的设备上开发。则375px应该还是375px。 基础font-size为75px,则这里换算成rem应该是5rem */ /* 想必你不一定能理解。试想如果在375宽度的设备上开发。这里的5rem是不是应该为37.5的5倍? 37.5*5=187.5刚好为375的1/2呢? */ width: 5rem; height: 5rem; background-color: green; }​ </style></head><body> <!-- 2. 假设一个750px宽度的设计稿,给了一个375px的元素块。 --> <!-- 我们的实现应该是一个盒子在不同宽度的设备上都应该表现一致(占比屏幕宽度的1/2)。 因为屏幕宽度不一定,通过px显然无法实现,那么我们就需要使用rem来做等比缩放。 --> <!-- 一个简单的例子: --> <div class="box"></div> <script> // 3. 这里通过js监听屏幕尺寸 设置html的font-size function setView(){ document.documentElement.style.fontSize = screen.width/10 + 'px'; } setView(); // 这里是为什么?你自己想一想 window.onresize = setView;​ </script></body></html>

至于px如何转换为rem,在vscode中可以搜索相关插件。

第二种: 媒体监听

媒体监听通过@media实现。注意:媒体监听不是等比缩放!!!是同一块内容在不同设备上有合理的表现。

比如在PC端一行能同时展示4个元素块,而在移动端只能一行展示1个或者2个元素块(要不看不清)。

那么就可以通过监听媒体宽度,给元素设置不同的宽度,从而有合理的表现。

代码参考:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- 1. 标准视口,禁止缩放,初始缩放为1 --> <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, user-scalable=no"> <title>媒体监听适配</title> <style> *{ margin: 0; padding: 0; } ul{ list-style: none; } .header{ width: 100%; height: 100px; background-color: pink; } .header .header-c{ width: 1200px; height: 100px; background-color: green; margin: 0 auto; } .header .nav{ /* width: xx */ height: 100%; } .header .nav .nav-item{ float: left; width: 100px; height: 100%; line-height: 100px; text-align: center; cursor: pointer; } /* 3. 针对适配的设备重新写一套样式 */ @media screen and (max-width: 750px){ .header{ position: relative; height: 40px; } .header .header-c{ width: 100%; } .header .nav{ position: absolute; width: 100%; left: 0; top: 40px; } .header .nav .nav-item{ float: none; width: 100%; height: 40px; background-color: pink; border-bottom: 1px solid gray; line-height: 40px; } } </style></head><body> <!-- 2. 要明确媒体监听实现的不是等比缩放!!!而是同一个内容在不同设备上都有合理的表现。 --> <!-- 比如一个导航 --> <div class="header"> <div class="header-c"> <ul class="nav"> <li class="nav-item">首页</li> <li class="nav-item">分类</li> <li class="nav-item">发现</li> <li class="nav-item">我的</li> </ul> </div> </div></body></html>第三种: vw/vh方案

vw 是相对单位,1vw 表示屏幕宽度的 1%。需要缩放的元素采用vw,不需要的采用px。

具体实现方法与rem类似,至于转换问题也可以参考rem的插件形式。

各种方案对比

rem方案:

原理不好理解^_^从px到rem的转换需要使用工具灵活可控,几乎完美复刻设计稿可能大量出现小数点,由于换算有些许误差(极小)适合具有完全移动端设计稿的项目

media媒体监听方案:

没有学习成本如何适配需要重新定义,可能设计稿都不会体现复杂的组件很难有完美的呈现适合只有PC端设计稿,又需要兼容移动端的需求

综合方案:

可以同时使用media和rem实现更大的自由度和更完美的呈现实现复杂,颗粒度不好把控

这里总结了两种常用的移动端适配方案。其实后来的微信小程序css单位rpx,换算方法为1px=2rpx,应该和rem的适配方案原理大致相同。

附件

代码仓库: https://gitee.com/bufanxy/learnjs-troublemaker

本文链接地址:https://www.jiuchutong.com/zhishi/296061.html 转载请保留说明!

上一篇:微信登录的接口(微信登录接口购买)

下一篇:GPT-4,大增长时代的序幕(增长gdp是什么意思)

  • 手机解锁温控会怎么样(手机解除温控降频)

    手机解锁温控会怎么样(手机解除温控降频)

  • vivos6是否有视频美颜功能(vivos6支持视频美颜吗)

    vivos6是否有视频美颜功能(vivos6支持视频美颜吗)

  • 爱奇艺会员能在银河奇异果用吗(爱奇艺会员能在电视上用吗)

    爱奇艺会员能在银河奇异果用吗(爱奇艺会员能在电视上用吗)

  • 怎么拉黑手机版拼多多店铺(手机如何拉黑对方号码)

    怎么拉黑手机版拼多多店铺(手机如何拉黑对方号码)

  • wifi干扰严重解决办法(wi-fi干扰)

    wifi干扰严重解决办法(wi-fi干扰)

  • 12306购票记录保存多久(12306历史订单保存多久)

    12306购票记录保存多久(12306历史订单保存多久)

  • 同步到云端是什么意思(同步到云端的照片还能恢复吗)

    同步到云端是什么意思(同步到云端的照片还能恢复吗)

  • oppo屏幕亮度不够(oppo屏幕亮度不稳定)

    oppo屏幕亮度不够(oppo屏幕亮度不稳定)

  • 不挂小黄车可以直播卖货吗(不挂小黄车可以宣传商品吗)

    不挂小黄车可以直播卖货吗(不挂小黄车可以宣传商品吗)

  • 智能手表寿命一般多少年(智能手表寿命一览表)

    智能手表寿命一般多少年(智能手表寿命一览表)

  • 苹果蓝牙耳机充电显示(苹果蓝牙耳机充不进去电怎么办 灯不亮)

    苹果蓝牙耳机充电显示(苹果蓝牙耳机充不进去电怎么办 灯不亮)

  • 单号填错卖家退款吗(单号填错卖家退货怎么办)

    单号填错卖家退款吗(单号填错卖家退货怎么办)

  • 计算机由两大部分组成(计算机由两大部分组)

    计算机由两大部分组成(计算机由两大部分组)

  • 如何开通微信圈子(如何开通微信圈权限)

    如何开通微信圈子(如何开通微信圈权限)

  • 华为媒体音量自动静音(华为媒体音量自动调节)

    华为媒体音量自动静音(华为媒体音量自动调节)

  • smart keyboard怎么用(smart keyboard怎么查序列号)

    smart keyboard怎么用(smart keyboard怎么查序列号)

  • ctrl+d是什么意思

    ctrl+d是什么意思

  • c语言程序由哪几部分组成(c语言程序由哪几部分)

    c语言程序由哪几部分组成(c语言程序由哪几部分)

  • 小米bn39电池是什么型号(小米电池bm3b)

    小米bn39电池是什么型号(小米电池bm3b)

  • 快手上头条要审核多久(快手上头条要审核吗)

    快手上头条要审核多久(快手上头条要审核吗)

  • 拼多多场景推广在哪里(拼多多场景推广ocpx怎样出价)

    拼多多场景推广在哪里(拼多多场景推广ocpx怎样出价)

  • 手机话费能开qq什么业务(手机话费能开公司发票吗)

    手机话费能开qq什么业务(手机话费能开公司发票吗)

  • word怎么调页面顺序(word怎么调页面设置)

    word怎么调页面顺序(word怎么调页面设置)

  • 为什么xr信号不好(xr手机信号突然不好)

    为什么xr信号不好(xr手机信号突然不好)

  • 华为m6可以插耳机吗(华为m6可以用typec耳机吗)

    华为m6可以插耳机吗(华为m6可以用typec耳机吗)

  • 滴滴电子发票能查到行程吗(滴滴电子发票能查到具体行程吗)

    滴滴电子发票能查到行程吗(滴滴电子发票能查到具体行程吗)

  • cad加载插件命令(cad加载插件命令快捷键)

    cad加载插件命令(cad加载插件命令快捷键)

  • 附近的人怎么看不到我(附近的人怎么看不见我)

    附近的人怎么看不到我(附近的人怎么看不见我)

  • 申报个体经营所得税时营业外收入怎么填
  • 行政事业单位转账至个人账户条例
  • 印花税减免优惠政策2020
  • acca b/f
  • 履约保证金打到哪个账户
  • 产品质量问题赔偿账务处理
  • 会计核算是否健全 填错了有影响吗
  • 备用金没有发票抵消违法吗
  • 多缴税款抵税有期限吗
  • 小企业会计准则和一般企业会计准则的区别
  • 不动产租赁发票怎么开
  • 企业怎样才能做好信用信息修复?
  • 过期的食品退回去厂里怎么处理
  • 财政补助收入怎么结转
  • 调价单生成什么科目
  • 私车公用保险费用公司承担吗
  • 津贴补助如何缴纳个税
  • 税务局查账征收转为核定征收之程序
  • 专家评审费个人所得税计算公式
  • 本地开的住宿费可以退吗
  • 金税四期有什么变化
  • 电商销售进对公账户怎样做账
  • 销售折扣账务怎么处理
  • 发票上开的购物卡,入帐时怎么写摘要?
  • 贷款利息可以抵扣吗
  • 材料卸车费可计入人工费吗
  • 其他债券投资出售时交易费用
  • 华为p30分屏怎么操作
  • 鸿蒙系统怎么升级3.0
  • 为什么电脑开机显示无信号然后黑屏
  • php初学者常见问题和答案
  • 付给他人押金的会计分录
  • linux运维有前景吗
  • 个税扣除项怎么扣除
  • 衍生金融资产会计科目
  • Fort Rock Valley Historical Homestead博物馆,俄勒冈 (© Prisma by Dukas Presseagentur GmbH/Alamy)
  • 个人所得税的减数为2000元,实行日期为
  • 待摊费用和预提费用改为什么科目了
  • vue url 参数
  • php二维数组按某个键值排序
  • php pdo oracle
  • 威尔士黄水仙
  • 报税货物范围包括
  • 云质信息
  • 小型微利企业增值税优惠政策2023最新
  • 上年科目记错如何更正
  • 共同开发产品
  • js怎么存储数据
  • mongodb索引使用正则表达式
  • 几个项目可以合到一起招标吗
  • 其他应付款辅助是供应商还是客户
  • access不能打开数据库
  • 提供加工修理修配劳务包含哪些
  • 异地预缴税款少交了城建税怎么办
  • MySQL中使用命令行查看二进制文件
  • 租来的厂房如何交税
  • 捐赠支出的账务处理
  • 跨境电商怎么交流
  • 期末汇兑损益的输入方式
  • 营改增后营业费用科目还有吗
  • 支付银行贷款利息的会计处理
  • 暂估入账是什么意思
  • 办公费用包含哪里费用
  • ubuntu开启图形化界面
  • 装了ntfs for mac os后找不到磁盘了
  • bearshare.exe进程安全吗 bearshare是什么进程
  • win7无法更改设置
  • win7系统怎么创建虚拟网络
  • linux系统怎么复制文件到u盘
  • win10 累积更新
  • Win10 Mobile RS1预览版14267.1004 修复Lumia 550充电问题
  • 微信 cookies
  • unity3d功能
  • python正则匹配url
  • 自定义dialogfragment
  • 一款简单的网络版多媒体课件制作软件是什么
  • 开发笔记本哪个比较好一点
  • 医保已申报未缴费可以撤销申报吗
  • 我是一般纳税人对方给我开的普票
  • 广东省电子税务局app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设