移动web 04

一、移动适配

  • rem:目前多数企业在用解决方案
  • vw / vh:未来的解决方案(重点)

1.vw/vh(则重)

1.1使用vw单位设置网页元素的尺寸
  • 相对单位
  • 相对视口的尺寸计算结果
  • vw:viewport width
  • 1vw = 1/100视口宽度
  • vh:viewport height
  • 1vh = 1/100视口高度

1.2vw适配原理
  • vw单位尺寸
  1. 确定设计稿对应的vw尺寸 (1/100视口宽度)
  • 查看设计稿宽度 → 确定参考设备宽度 (视口宽度) → 确定vw尺寸 (1/100 视口宽度)
  1. vw单位的尺寸 = px单位数值 / ( 1/100 视口宽度 )

代码:(加理解/ /)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>vw和vh</title>
  8. <style>
  9. *{
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. /*
  15. 0 相对长度和绝对长度
  16. 1.绝对长度 姚明 2.50米 长度固定
  17. px 绝对长度单位 固定!!
  18. 2.相对长度 小万 半个姚明高!! 相对大小是改变、必须参照物
  19. em
  20. %
  21. vw/vh
  22. 1 vw/vh 是相对长度单位
  23. vw vh => view width | view height
  24. 100vw 等于屏幕的宽度
  25. 100vh 等于屏幕的高度
  26. */
  27. div{
  28. width: 100vw;
  29. height: 100vh;
  30. background-color: red;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div></div>
  36. </body>
  37. </html>
  • 注意:开发中,会不会vw和vh混用呢? 不会
  • vh是1/100视口高度,全面屏视口高度尺寸大,如果混用可能会导致盒子变形

移动web 04 - 图1

计算公式:

**公式: 手机像素100vw 设计稿元素大小 / 设计稿大小

2.vw/vh计算样式

运用calc计算

代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{
            /* 
            屏幕的一半 减去 100px
            */
            width: calc(50vw - 100px);
            height: 50vw;
            background-color: pink;
        }
        /* 
        默认的css 不可能直接计算的表达式
        需要使用 cale 
        */
    </style>
</head>
<body>
    <div></div>
</body>
</html>

2.1计算公式案例

计算公式:

**公式: 手机像素100vw 设计稿元素大小 / 设计稿大小

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{
            /* 公式: 手机像素s100vw * 设计稿元素大小 / 设计稿大小 */
            width: calc(100vw * 100 / 375);
            /* width: calc(100vw / 375 * 100); */
            height: calc(100vw / 375 * 100);
            /* alt + z 快捷键 瞬间把px 变成 vw */
            /* 快捷方法需要使用扩展功能 */
            height: 26.667vw;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

2.2运用快捷键直接将px变成vw

操作流程

1.打开Visual Studio Code

2.点击扩展(Ctrl + Shift + X)

3.搜索 px-to-vw (注意:使用作者为朝江的)

4.下载好了之后,后期使用,只需要alt+z即可将px单位直接转换成vw单位

5.注:使用前,确认好设计稿的宽度

可前往设置 搜索vw在px-to-vw:Viewport Width中更改宽度

移动web 04 - 图2

移动web 04 - 图3

**建议做项目的若需要转换不一一进行转换

先运用设计稿的长度单位完成之后再去一个一个模块替换vw

移动web 04 - 图4

注意:

vw和rem 快捷键均为 alt+z 使用前,请牢记只能启动一个设置模式,否则会相互冲突,选其一,则另一个需要进行禁用

3.rem

3.1使用rem单位设置网页元素的尺寸
  • l网页效果

1、屏幕宽度不同,网页元素尺寸不同(等比缩放)

  • px单位或百分比布局可以实现吗?
  1. px单位是绝对单位
  2. 百分比布局特点宽度自适应,高度固定
  • 适配方案
  1. rem
  2. vw / vh

3.2.rem单位设置网页元素的尺寸

rem单位

相对单位

rem单位是相对于HTML标签的字号计算结果

1rem = 1HTML字号大小

rem单位尺寸
  1. 根据视口宽度,设置不同的HTML标签字号
  2. 书写代码,尺寸是rem单位

2.1 确定设计稿对应的设备的HTML标签字号

  • 查看设计稿宽度 → 确定参考设备宽度(视口宽度) → 确定基准根字号(1/10视口宽度)

2.2 rem单位的尺寸

  • N * 37.5 = 68 → N = 68 / 37.5
  • rem单位的尺寸 = px单位数值 / 基准根字号

4.rem计算样式

4.1计算公式案例

运用calc计算

代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{ 
 /*公式:手机像素s100vw * 设计稿元素大小 / 设计稿大小*/
            width: calc(10rem / 375 * 100);
            height: calc(10rem / 375 * 100);
            /* alt + z 快捷键 瞬间把px 变成 vw */
            font-size: calc(10rem / 375 * 10);
            background-color: pink;
        }
    </style>
</head>
<body>
    <script src="./js/flexible.js"></script>
    <div>rem移动适配</div>
</body>
</html>

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

4.2Flexible
  • flexible.js是手淘开发出的一个用来适配移动端的js框架。
  • 核心原理就是根据不同的视口宽度给网页中html根节点设置不同的font-size。

移动web 04 - 图5

4.3运用快捷键直接将px变成rem

操作流程

1.打开Visual Studio Code

2.点击扩展(Ctrl + Shift + X)

3.搜索 px-to-rem (注意:使用作者为Marco N)

4.下载好了之后,后期使用,只需要alt+z即可将px单位直接转换成rem单位

5.注:使用前,确认好设计稿的宽度

可前往设置 搜索rem在设置中将设置复制为JSON文本后,点击后上角的标志,进入修改最后一行代码的数值即可

移动web 04 - 图6

移动web 04 - 图7

移动web 04 - 图8

移动web 04 - 图9

注意:

vw和rem 快捷键均为 alt+z 使用前,请牢记只能启动一个设置模式,否则会相互冲突,选其一,则另一个需要进行禁用

二、思维导图总结

移动web 04 - 图10

  1. vw 建议 简单方便 主流
  2. rem + flexible.js 麻烦 旧一点点