移动端适配解决方案

移动端适配解决方案

  • rem
    • rem基本知识
    • 如何根据不同设备的屏幕、分辨率,设置不同的HTML标签字号?
    • 设备不同,HTML标签字号设置多少合适?
    • 如何将设计稿中的px转化成rem单位?
    • 使用flexible.js配合rem实现在不同宽度的设备中,网页元素尺寸等比例缩放效果
      • 为什么使用flexible.js?
  • Viewport Width、Viewport Height
    • VW/VH基本知识
    • 如何根据设计稿中的px转化成vw单位

rem

rem基本知识

  • rem是一个单位
  • 与px不同,rem是一个相对单位,相对于HTML标签字号的单位
  • 1rem = 1HTML字号大小

如何根据不同设备的屏幕、分辨率,设置不同的HTML标签字号?

使用媒体查询设置差异化CSS样式

为什么使用媒体查询:媒体查询能够检测视口的宽度,既然检测到了视口不同的宽度,那么我们就可以根据不同的视口宽度设置不同的HTML字号大小了。
媒体查询语法

@media(媒体特性){CSS样式选择器{CSS属性}}

其中媒体特是指设备尺寸大小
案例

    /*
      这段代码的含义是:
      当视口宽度大于等于 640px 且 高度大于等于 720px,body 的背景色为蓝色
    */
@media only screen and (min-width: 640px) and (min-height: 720px) {
      html{
        font-size: 12px;
      }

在rem基本知识点的时候已经标红了一个重点知识,那就试1rem = 1HTML字号大小,那么如果我将在不同屏幕分辨率的情况下设置不同的HTML根节点大小,是不是就能实现==屏幕宽度不同,网页元素尺寸不同(等比缩放)==了呢?聪明的你肯定很快将个中关系梳理清楚的了。

设备不同,HTML标签字号设置多少合适?

现在你已经掌握了根据屏幕宽度不同,设置不同网页元素尺寸了,那么我们怎么确定在不同屏幕下设置多大的HTML字号大小比较合适呢?不必担心,前辈已经给我们实践出真知了,请牢记:目前rem布局方案中,将为网页分成10份,HTML标签的字号为视口宽度1/10

如何将设计稿中的px转化成rem单位?

  • 确定设计稿对应的设备的HTML标签字号
    查看设计稿宽度–》确定参考设备宽度(视口宽度)–》确定基准根字号(1/10视口宽度)

  • rem单位的尺寸
    rem单位的尺寸 = px单位数值 / 基准根字号
    案例:计算68px是多少个rem?(假定设计稿适配375px视口)
    解答:设N为rem: N * 37.5 = 68px ------> N = 68px / 37.5

使用flexible.js配合rem实现在不同宽度的设备中,网页元素尺寸等比例缩放效果

为什么使用flexible.js?

假定场景,市面上的手机型号如此之多,屏幕大小分辨率也不一样,那么我们在使用rem做移动端适配的时候势必要写多条的媒体查询来适配不同设备下的HTML字号大小,试问:如此冗余的代码怎能存在。

  • flexible.js是手机淘宝开发出来的用来适配移动端的js框架
  • flexible.js能做到根据不同的视口宽度给网页中的HTML根节点设置不同的font-size
    在使用时我们只需要把flexible.js下载到本地,并且引入到代码中,即可将设置基准根字号的CSS全部取代。

Viewport Width、Viewport Height

VW/VH基本知识

  • 相对单位
  • 相对视口的尺寸计算结果
  • vw:viewport width 1vw = 1/100视口宽度
  • vh:viewport height 1vh = 1/100视口高度

如何根据设计稿中的px转化成vw单位

  • 确定vw尺寸
    查看设计稿宽度-》确定参考设备宽度(视口宽度)-》确定vw尺寸(1/100视口宽度)
  • vw单位的尺寸 = px单位数值 /(1/100视口宽度)
    案例:计算68px是多少个vw?(假定设计稿适配375px视口)
    解答:设N为vw:N * 3.75 = 68px ------> N = 68px / 3.75
    注意:vw、vh在同一屏幕大小分辨下转化成px长度是一样的,也就是说你使用vw或者vh作为单位都可以,但是值得注意的是不可混用vw、vh,例如

看完上面基于rem和vw、vh的讲解,不知道你对移动端适配是不是有了基本掌握呢?

你可能感兴趣的:(移动端,css,html,css3)