移动适配

169 阅读3分钟

移动适配

定义:移动适配是指使不同尺寸的手机设备页面“相对性的达到合理的展示(自适应)”或者“保持统一效果的等比缩放。

px和百分比的区别

px(像素)

  1. px是绝对长度
  2. 单位是固定,宽高或者位置不改变

百分比

  1. 百分比是相对长度
  2. 是参照其他的物体的变化而发生变化,比如当父元素宽高或者位置发生变化的时候,如果想要子元素的宽高或者位置也随之发生变化,就应该使用百分比

总结

首先先想清楚页面的需求是什么,是希望定死宽高或者位置,那就用px;

如果不希望定死宽高或者位置,想随着其他物体的位置发生变化就应该使用百分比

拓展

img图片经常使用的单位 百分比单位或者vw单位

vw

定义以及作用

  1. 相对长度单位(需要找参照物)
  2. 相对屏幕的宽度
  3. 100vw=屏幕的宽度;100vh=屏幕的高度
  4. 作用:移动端的屏幕适配(换句话来说,就是手机屏幕越大,看见的元素就越大;相反手机屏幕越小,看见的元素就越小。实现在不同宽度的设备中,网页元素尺寸等比缩放效果)

原理

image-20220321202537688.png

总结:要适配的元素的宽度=屏幕的宽度*设计稿中元素的宽度/设计稿宽度

如何使用vw实现屏幕适配

calc(计算的缩写):可以在不同单位进行运算,calc加减乘除都可以,注意运算符两侧必须要加空格

代码案例

  <title>vw移动适配和calc的体验</title>
  <style>
    /* 要适配的手机中的div的宽度=要适配的手机屏幕(100vw)*设计稿中div的宽度/设计稿的宽度 */
    div {

      width: 26.6667vw;
      height: calc(100vw * 50px / 375);
      background-color: pink;
    }
    .two {
      width: calc(100vw * 200px / 375);
      height: calc(100vw * 80px / 375);
      background-color: yellowgreen;
    }
  </style>
</head>
<body>
  <div>1</div>
  <div class="two">2</div>
</body>

在vscode中安装vw插件

好处:可以自动计算出多少的vw

操作步骤如图所示:

image-20220321202639274.png

添加的代码

"px2vw.width": 375, (添加的位置是随便找个逗号的位置后面按回车放此代码即开)

vh

定义以及作用

  1. 相对长度单位(需要找参照物)
  2. 相对屏幕的高度
  3. 100vh=屏幕的高度
  4. 作用:移动端的屏幕适配(换句话来说,就是手机屏幕越大,看见的元素就越大;相反手机屏幕越小,看见的元素就越小。实现在不同宽度的设备中,网页元素尺寸等比缩放效果)

注意点

开发中,vw不会和vh混用,因为 vh是1/100视口高度,全面屏视口高度尺寸大,如果混用可能会导致盒子变形。

rem

定义

  1. 相对长度单位 (找到参照物)

  2. 参照的根标签(html)的fontsize

  3. 如果自己不设置html的字体大小

    1rem=16px (谷歌浏览器默认的字体大小是16px)

  4. 如果设置了html的字体大小是1px

    1rem=1px

  5. 总结:a. 1rem大小是相对于页面根标签的字体大小

    ​ b. 不要研究rem小于12的时候的情况,自己设置尽可能讲rem设置为大于等于12,避免问题即开

原理

rem屏幕适配.png

rem屏幕适配2.png

屏幕宽度和html的字体大小关系

10倍根标签的字体大小=屏幕宽度

根标签的字体大小=1rem

10rem=10倍根标签的字体大小=屏幕宽度

总结:10rem=屏幕宽度

公式 :要适配的元素的宽度=屏幕的宽度设计稿中元素的宽度/设计稿宽度*

如何使用rem实现屏幕适配

代码案例

 <title>rem-实现屏幕适配</title>
  <style>
    div {
      width: 2.6667rem;
      height: calc(100vw * 50px / 375);
      background-color: pink;
    }
    .two {
      width: calc(100vw * 200px / 375);
      height: calc(100vw * 80px / 375);
      background-color: yellowgreen;
    }
  </style>
</head>
<body>
  <div>1</div>
  <div class="two">2</div>
</body>

学习引入手机淘宝写好的js 代码 (flexible.js)

好处就是屏幕的宽度改变-html的字体大小也发生改变

  <title>根据屏幕的宽度来改变html根标签的字体大小</title>
</head>
<body>
  <script src="./flexible.js"></script>
</body>

在vscode中安装rem插件

操作如图所示

image-20220321205735946.png

添加的代码

"cssrem.rootFontSize": 37.5,

总结

image-20220321204853075.png