cometang前端技术博客 cometang前端技术博客
首页
  • html5
  • JavaScript
  • ES6
  • Vue
  • 微信小程序
  • react
  • react上手教程
  • 前端框架
  • 大神之路
  • 面试汇总
  • Node
  • PHP
  • Go语言
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

cometang

永远相信技术的力量
首页
  • html5
  • JavaScript
  • ES6
  • Vue
  • 微信小程序
  • react
  • react上手教程
  • 前端框架
  • 大神之路
  • 面试汇总
  • Node
  • PHP
  • Go语言
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • ES6

  • vue

  • h5

    • flex布局
    • 移动端适配方案
      • 一 各种方案的优劣
  • JavaScript

  • 前端框架

  • react

  • 大神之路

  • 微信小程序

  • 面试题汇总

  • react轻松上手教程

  • 前端
  • h5
cometang
2021-05-09
目录

移动端适配方案

# 移动端布局+完美适配方案

目前市面上流行的移动端适配技术

  • 百分比流式布局 (宽高百分比值,字体给百分比/rem值)
  • 利用js动态监听设备宽度,加载不同css
  • html5的媒体查询方式 写多套CSS(@media+rem)
  • 栅格化布局(行列布局,如bootstrap elementUI 等UI框架思想)
  • 淘宝前端开源库flexible.js (趋近于完美)

# 一 各种方案的优劣

  • 百分比流式布局

    原理:根据获取设备的屏幕高宽来 动态设置 盒子|字体的高宽及大小

    优:能够保证在任何设备中同一套css 都能够被顺利解析,解析之后自动生成对应百分比高宽

    缺点:因为高宽是根据百分比来自动生成的,一旦跨端幅度过大(如:写的移动端与pc端同时用一套代码时)会造成页面显示非常的不和谐,给人感觉不精致,很粗糙的感觉。

  • 利用js动态监听设备宽度,加载不同css

    优:因为是根据js 获取的设备的高宽,加载不同设备的css文件,所以页面显示适配度非常高,实现原理:(iphone5 一套css样式;iphone 6 7 8 一套css样式;平板一套css样式;pc端一套css样式)。

    缺:因为需要根据不同的设备加载不同的css文件,造成前期需要去写多套的独立css文件,前期往往需要花费大量的时间去做css的处理,项目的进度安排往往在前期的页面及样式要求非常快速的速度完成。

  • html5的媒体查询方式 写多套CSS(@media+rem)

    优:html5的媒体查询方式 本质上更像是 第二种方法【利用js动态监听设备宽度,加载不同css】的进阶版本,不再需要js去做高宽的获取判断,直接在css文件中通过 css的 媒体查询就可以拿到当前设备的宽高,性能开销更小,比第二种方案更为优秀。

    缺:同样是需要写多套的css样式。

     <style>
        html,
        body {
          width: 100%;
          height: 100%;
          /* 设置初始字体大小 */
          /* 浏览器默认字体大小为 16px  则 1rem = 16px */
          /* 设置字体初始大小为 62.5%   则 1rem = 10px  更加好计算与转换*/
          font-size: 62.5%;
        }
    
        * {
          padding: 0;
          margin: 0;
        }
    
        /* 默认样式 */
    
        .box {
          /* 20rem === 200px */
          width: 20rem;
          height: 20rem;
          background: red;
        }
    
        /* iphone 5/5S/5E */
    
        /* 屏幕宽度小于等于 320px 时生效 */
    
        @media screen and (min-width: 320px) {
          .box {
            background: green;
          }
        }
    
        /* 比iphone5 大 比iphone 6/7/8S 小的屏幕 */
    
        /* 屏幕宽度 大于等于321px 且小于等于374px  时生效 */
    
        @media screen and (min-width: 321px) and (max-width: 374px) {
          .box {
            background: blue;
          }
        }
    
        /* iphone 6/7/8/X */
    
        /* 屏幕宽度 375px至413px之间 时生效 */
    
        @media screen and (min-width: 375px) and (max-width: 413px) {
          .box {
            background: skyblue;
          }
        }
    
        /* iphone 6s/7s/8s */
    
        /* 比平板电脑小 屏幕宽度 414px 至767px 时生效 */
    
        @media screen and (min-width: 413px) and (max-width: 767px) {
          .box {
            background: pink;
          }
        }
    
        /* 平板电脑 ipad  */
    
        /*比电脑小 屏幕宽度 768px 至900px 时生效   */
    
        @media screen and (min-width: 768px) and (max-width: 899px) {
          .box {
            background: #f60;
          }
        }
    
        /* PC电脑 */
    
        /*  屏幕宽度 900px 以上 时生效   */
    
        @media screen and (min-width: 900px) {
          .box {
            background: #000;
          }
        }
      </style>
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
编辑 (opens new window)
上次更新: 2022/05/28, 19:34:46
flex布局
node入门及npm使用

← flex布局 node入门及npm使用→

最近更新
01
go语言基础
07-13
02
《react上手教程》- 基础语法
07-13
03
redux-redux toolkit-状态管理
03-18
更多文章>
Theme by Vdoing | Copyright © 2019-2023

cometang | 唐世杰 渝ICP备18015657号-2

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式