美文网首页JS前端h5,css,js参考库
移动端开发技巧(二)——四种移动端适配方案

移动端开发技巧(二)——四种移动端适配方案

作者: 临安linan | 来源:发表于2019-07-07 23:24 被阅读142次

完整移动端开发笔记,请戳https://github.com/zenglinan/Mobile-note
目录:

  1. viewport适配
  2. vw适配
  3. rem适配
  4. flex弹性盒

1. viewport适配

流程

  1. 按照设计稿上标注的尺寸进行开发
  2. 在页面刚开始渲染的时候设置meta,将渲染的页面的宽度设为设计稿的宽度
  3. 将页面整体缩放,缩放比例为当前屏幕的独立像素宽度/设计稿宽度
// 放在页面头部
<script>
    const WIDTH = 750   // 设计稿宽度
    const mobileAdapter = () => {
      let scale = screen.width/WIDTH  // 缩放比
      let content = `width=${WIDTH}, initial-scale=${scale}, maximum-scale=${scale}, minimum-scale=${scale}`
      let meta = document.querySelector('meta[name=viewport]')
      if(!meta) {
        meta = document.createElement('meta')
        meta.setAttribute('name', 'viewport')
        document.head.appendChild(meta)
      } 
      meta.setAttribute('content', content)
    }
    mobileAdapter()
    window.onorientationchange = mobileAdapter  // 监听屏幕旋转
  </script> 

优点:

方便开发,不用计算,一切元素的宽高按设计稿来即可

缺点:

边框等不需要缩放的元素,也会跟着缩放

2. vw适配

为了解决方案1(viewport适配)的缺点(无法对部分缩放,部分不缩放),出现了vw适配

流程

  1. 将设计稿(假设750px)上需要适配的尺寸转换成vw,比如页面元素字体标注的大小是32px,换成vw为 32/(750/100) vw
  2. 对于需要等比缩放的元素,CSS使用转换后的单位
  3. 对于不需要缩放的元素,比如边框阴影,使用固定单位px
    (1) viewport设置 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">

    把layout viewport 宽度设置为设备宽度,不需要缩放
    (2) 用js定义css的自定义属性--width,表示每vw对应的像素数。
    (3) 根据设计稿标注设置样式,比如标注稿里元素宽度为20px。这里设置 calc(20vw / var(--width))
// HTML
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>viewport缩放实战</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
  <script>
    const WIDTH = 750
    document.documentElement.style.setProperty('--width', (WIDTH/100));
  </script>
</head>

// CSS
header {
  font-size: calc(28vw / var(--width));
}

优点

可以对需要缩放的元素进行缩放,保留不需缩放的元素

缺点

书写复杂,需要用calc计算

3. rem适配

为了改良vw适配书写复杂的缺点,出现了rem适配。

假设设计稿宽度为750px,手机端宽度为320px,上面字体标注为32px,则字体在手机端应该设为32 * (320/750) px。

将1rem设为 320/750,则字体大小可直接表示为32rem。

但是浏览器字体大小有限制,不能小于12px。故将html的font-size设为 (移动端设备宽度/设计稿宽度)x100

流程

  1. 拿到设计稿(假设设计稿尺寸为750px,设计稿的元素标是基于此宽度标注)
  2. 对设计稿的标注进行转换
  3. 对于需要等比缩放的元素,CSS使用转换后的单位
  4. 对于不需要缩放的元素,比如边框阴影,使用固定单位px
// HTML
<head>
  <meta charset="utf-8">
  <title> 动态rem缩放实战</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1">
  <script>
    const WIDTH = 750  //设计稿尺寸
    const setView = () => {
      console.log(screen.width)
      document.documentElement.style.fontSize = (100*screen.width/WIDTH) + 'px'
    }
    window.onorientationchange = setView
    setView()
  </script>
</head>

// CSS
body{
  font-size: .32rem;  // 设计稿上宽度为32px
}

优点:书写简单可见

4. flex弹性盒

对于不需要缩放的元素,也可以采用flex布局延伸
eg.左边头像,右边文本,文本可以进行自适应。

相关文章

  • 移动端适配

    移动端适配 dpr、DPI、PPI 视口 移动端适配的方案 微信小程序适配方案 微信小程序开发

  • 记一次前端技术分享(移动端相关概念讲解)

    移动端开发中的相关概念讲解 1、移动端自适配方案 移动端如何根据不同手机尺寸进行页面的适配 rem 自适应和 vw...

  • 移动端开发技巧(二)——四种移动端适配方案

    完整移动端开发笔记,请戳https://github.com/zenglinan/Mobile-note目录: v...

  • 移动web开发与适配

    学习目标 了解移动web简单调试方法 了解移动web常见适配方案 掌握移动端布局技巧 全面掌握rem适配方法 移动...

  • 移动端总结

    移动端技巧总结 对移动端开发和适配的技巧总结,主要从适配和注意事项两方面进行总结 1.媒介查询 2. 手机端加一个...

  • 移动端开发(Html+Css)

    placeholder自定义 移动端适配CSS方案 移动端适配方案一 font-size可能需要额外的媒介查询,并...

  • lib-flexible适配大屏方案(附移动端适配)

    前言   相信大多数移动端前端开发者都是用过lib-flexible来作为移动端适配的解决方案。lib-flexi...

  • 转载-浅谈React

    Part 1 | 移动端开发方案 目前移动端开发方案可谓百家齐鸣,以至于很难使用单一条件对所有移动端开发方案进行划...

  • 2018-07-02待学习文章

    1.RN移动端适配:移动端适配方案 flexible.js - 云库网 2.React16新特性:reveal.j...

  • vue移动端总结

    移动端适配 相对于PC端来说,移动端设备分辨率百花齐放,千奇百怪,对于每一个开发者来说,移动端适配是我们进行移动端...

网友评论

    本文标题:移动端开发技巧(二)——四种移动端适配方案

    本文链接:https://www.haomeiwen.com/subject/omlwhctx.html