移动端适配问题解决方案

一、移动端适配

1、什么是移动端适配

在这里插入图片描述

2、认识视口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhJJaBW9-1660980062577)(318D047924CE4AFE8BAFAA02A3CD7606)]

在这里插入图片描述

在这里插入图片描述

<!-- width: 设置布局视口的宽度 -->
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

3、移动端适配方案

在这里插入图片描述

3.1 媒体查询

在这里插入图片描述

<!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>
    @media screen and (min-width: 320px) {
      html {
        font-size: 20px;
      }
    }

    @media screen and (min-width:375px) {
      html {
        font-size: 30px;
      }
    }

    @media screen and (min-width:400px) {
      html {
        font-size: 40px;
      }
    }

    @media screen and(min-width:500px) {
      html {
        font-size: 50px;
      }
    }

    .box {
      width: 5rem;
      height: 5rem;
      background-color: orange;
    }
  </style>
</head>

<body>

  <div class="box">

  </div>

</body>

</html>

3.2 js动态计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bIGclLY1-1660980062584)(270021E8F05B47BDAB75445E7FCA3DB2)]

<!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>
    /* 设置font-size之后页面不会随便继承html的大小 */
    body {
      font-style: 16px;
    }

    .box {
      width: 5rem;
      height: 5rem;
      background-color: orange;
    }

    p {
      font-style: 0.5rem;
    }
  </style>
</head>

<body>
  <div class="box"></div>
  <p>我是文本</p>
  <span>哈哈哈</span>


  <script>
    // 1.获取html的元素
    const htmlEl = document.documentElement

    function setRemUnit() {
      // 2.获取html的窗口宽度
      const htmlWidth = htmlEl.clientWidth
      // 3.根据宽度计算一个html的font-size的大小
      const htmlFontSize = htmlWidth / 10
      // 4.将font-size甚至到html
      htmlEl.style.fontSize = htmlFontSize + 'px'
    }
    // 保证第一次进来的时候,触发一次
    setRemUnit()

    // 当屏幕尺寸发生变化的时候,实时修改html的font-size
    window.addEventListener('resize', setRemUnit)

    // 当页面发生跳转的时候触发,前进后退按钮
    window.addEventListener('pageshow', function (e) {
      if (e.persisted) {
        setRemUnit()
      }
    })
  </script>

</body>

</html>

3.3 使用库

在这里插入图片描述

4、rem计算的方法

4.1 手动计算

  <style>
    /* 假设设计稿为750px  将他视为10份 每一份为37.5  */
    /* 即1rem = 37.5px  100px = 100/37.5rem */
    .box {
      width: 2.66667rem;
      height: 2.66667rem;
      background-color: orange;
    }

    p {
      font-size: 0.373333rem;
    }
  </style>

4.2 通过less计算

  • 使用lessc插件 使得可以使用less编译器 lessc.org
<!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>

  <link rel="stylesheet/less" href="./rem_less/index.less">

  <script src="./js/hy_flexible.js"></script>
  <script src="./js/lessc.js"></script>
</head>

<body>

  <div class="box">
  </div>

  <p>我是文本</p>

</body>

</html>
.pxToRem(@px) {
  result: 1rem * (@px/37.5)
}

.box {
  width: .pxToRem(100)[result];
  height: .pxToRem(100)[result];
  background-color: orange;
}

p {
  font-size: .pxToRem(14)[result];
}

4.3 postcss-pxtorem

在这里插入图片描述

http://www.3qphp.com/web/javascript/4854.html

4.4 利用vscode插件

在这里插入图片描述

5、vh、vw单位换算

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值