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

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

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

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

例子

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

  1. 小米移动端商城,很明显是采用了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

声明:不凡君原创不易,转载请说明出处。

全能的不凡君
关注 关注
  • 13
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
移动端适配方案.doc
03-13
移动端适配方案 移动端适配方案是指在移动设备上显示网页内容的技术方案,旨在解决移动端屏幕尺寸和像素密度的差异对网页显示的影响。下面是相关的知识点: 1. 像素视口概念 * 像素是屏幕上一个个发光的小点,...
面试官:你知道移动端适配吗?
程序员成长指北
02-25 215
大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号 回复1,加入高级Node交流群大家好,我是考拉????。分享一篇移动端适配的多个方案,也可以说说你是怎么做的。正文自适应:根据不同的设备屏幕大小来自动调整尺寸、大小响应式:会随着屏幕的实时变动而自动调整,是一种更强的自适应为什么要做移动端适配?目前市面上移动端屏幕尺寸非常的繁多,很多时候我们希望一个元素在不同的屏幕上显示不同的大小...
移动端适配方案
gako15587481707的博客
05-16 2488
移动端适配方案: flex + rem单位 做适配效果 (比如淘宝和小米移动端) 当前市场最多 flex + viewport width /vh单位 做适配效果 (比如 B站移动端 ) 新兴,马上的一个趋势 让flex做布局(盒子摆放),让rem或者vw/vh 实现网页元素的尺寸(宽度和高度)适配屏幕 rem 适配 rem 单位 rem 是一个相对单位,1rem 就是 html 文字的大小 比如 html { font-size: 35px; } 则此时 1..
带你认识什么是移动端适配,及常见的几种方案(em,rem,vw,vh,...)
最新发布
qq_73220073的博客
08-17 926
原生App开发(iOS、Android、RN、uniapp、Flutter等).小程序开发(原生小程序、uniapp、Taro等).Web页面(移动端的Web页面,可以使用浏览器或者webview浏览):根据不同的设备屏幕大小来自动调整尺寸、大小:会随着屏幕的实时变动而自动调整,是一种自适应。
移动端适配的理解和各种方案解析(详解)
weixin_57677300的博客
02-24 8975
自适应:根据不同的设备屏幕大小来自动调整尺寸,大小。响应式:会随着屏幕的实时变动而自动调整,是一种自适应。
移动端适配详解 , 给你解决适配烦恼
热门推荐
玄鱼殇
05-20 1万+
开发页面到移动端适配各个手机型号
移动端适配方案
syt_1013的博客
11-03 3728
移动端适配
移动端适配方案总结
Liz's blog hut.
07-28 8105
rem、viewport两种移动端适配方案的介绍和实现总结
前端解决移动端适配的五种方法
熊小露的博客
10-09 4577
移动端适配的五种方法 所谓移动端适配,就是WebApp在不同尺寸的屏幕上等比显示 第一种方法:viewport适配 原理:通过设置initial-scale, 将所有设备布局视口的宽度调整为设计图的宽度. //获取meta节点 var metaNode = document.querySelector('meta[name=viewport]'); //定义设计稿宽度为375 var designWidth = 375; //计算当前屏幕的宽度与设计稿比例 var scale = docu..
详解基于Vue/React项目的移动端适配方案
10-16
移动设备拥有多种屏幕尺寸和分辨率,为了保证网页在不同设备上能够有良好的显示效果,开发者需要采用相应的适配方案。在前端技术栈中,Vue和React是两大热门的框架,它们各自有着一套成熟的生态和解决方案来支持...
移动端适配解决方案.docx
10-26
本文将详细介绍几种常见的移动端适配方案及其优缺点。 ### 常见移动端适配方案 #### 1. 媒体查询 媒体查询是一种通过CSS为不同类型的设备提供不同样式的机制。开发者可以根据屏幕宽度、分辨率等条件应用特定的...
移动端手机和平板适配解决方案
03-25
在H5移动端开发中,适配方案通常涉及以下几个关键技术点: 1. **响应式设计(Responsive Design)**:响应式设计是确保页面在不同屏幕尺寸上自适应的关键。通过使用CSS3的媒体查询(Media Queries)可以定义不同...
flexible.js实现移动端rem适配方案
10-15
`flexible.js` 是一种流行的适配方案,它利用rem单位和设备像素比(device pixel ratio,dpr)来自动调整页面元素的大小,确保在不同分辨率的屏幕上都有良好的视觉效果。 ### 基础知识 1. **物理像素**:设备上的...
移动端适配的几种方案
qq_42445025的博客
10-13 3966
移动端适配的几种方案 viewport即视窗、视口,用于显示网页部分的区域,在PC端视口即是浏览器窗口区域,在移动端,为了让页面展示更多的内容,视窗的宽度默认不为设备的宽度,在移动端视窗有三个概念:布局视窗、视觉视窗、理想视窗。 布局视窗:在浏览器窗口css的布局区域,布局视口的宽度限制css布局的宽。为了能在移动设备上正常显示那些为pc端浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或其他值,一般都比移动端浏览器可视区域大很多,所以就有横向滚动条。 视觉视窗:终端设备
移动端页面适配
m0_74331160的博客
12-06 3023
一、移动端页面适配 二、0 适配 三、等比缩放 四、相对单位:em、rem、vw、vh
移动端适配大总结
qq_41194539的博客
06-19 1920
大家都知道现在市面上的手机尺寸越来越多,对于一名前端开发来说,面临着开发上的挑战。要使各个手机上的UI达成一致效果,就需要我们采用各种方案规避差距。
移动端适配
weixin_73416102的博客
12-08 2030
移动端适配
写文章

热门文章

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

最新评论

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

    全能的不凡君: 确实是哦 🙏

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

    烈阳煮海: b站采用的时vw/vh方案

大家在看

  • 启动应用程序出现System.Runtime.InteropServices.dll找不到问题 444
  • 启动应用程序出现System.Runtime.InteropServices.WindowsRuntime.dll找不到问题 544

最新文章

2022年1篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司光明网站自动优化许昌网站建设优化渠道萧县seo网站优化网站运费优化降低物流成本舟山网站优化厂家孝感产品网站优化公司排名怀化网站优化营商视频网站如何优化海口网站维护优化福建网站优化报价昆明做网站优化官网网站优化排名新乡营销网站快速排名优化技巧女装行业网站优化济南企业网站优化推广渠道商丘网站搜索引擎优化排名公司河南省网站优化排名武汉网站排名优化价格江门德阳网站优化公司铁岭网站优化推广报价西乡小企业网站优化网站图片优化怎么设置优化网站沉醉云速捷看看罗湖高端网站优化公司有哪些网站怎么优化关键词排名网站优化方案书宜良网站优化运营网站网店搜索流量优化东莞网站优化关键词报价合肥网站优化常识香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化