本文介绍: 文章目录css3新增单位remvw vh移动适配方案flexible rem方案优点缺点vhvw方案缺点css3新增单位remcss3 新增相对单位remem单位一样,都是一个相对单位,em是相对于父元素fontsize进行计算,即父元素fontsizenpx,则1em就代表npx,所以em单位在不同的元素选择器中都不同因此我们需要一个在所有元素选择器中都一致的一个单位,rem因此出现了rem是相对于根元素htmlfontsize来进行计算的,即根元素html的fon

css3新增单位

rem

css3 新增相对单位

remem单位一样,都是一个相对单位,em是相对于父元素fontsize进行计算,即父元素的fontsize为npx,则1em就代表npx,所以em单位在不同的元素选择器中都不同

因此我们需要一个在所有元素选择器中都一致的一个单位,rem因此出现了
rem是相对于根元素html的fontsize来进行计算的,即根元素html的fontsize为npx,则1em就是npx

vw vh

请添加图片描述
例如,在桌面浏览器视口尺寸为650px,那么1vw = 650 * 1% = 6.5px(这是理论推算得出,如果浏览器支持0.5px,那么实际渲染结果可能是7px)。

如果设计稿为 750px,那么 1vw = 7.5px,100vw = 750px。其实设计稿按照设么都没多大关系,最终转化过来的都是相对单位,上面讲的 rem 也是对它的模拟这里的比例关系也推荐不要自己换算,使用 pxtoviewport 的库就可以我们转换。当然每种方案都会有其弊端,这里就不展开讨论。

移动适配方案

flexible rem方案

在进行移动开发时,我们会发现一个问题代码如下

<!DOCTYPE html>
<html lang="en">
<head&gt;
  <meta charset="UTF-8"&gt;
  <meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
  <meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
  <title&gt;Document</title&gt;
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      float: left;
      width: 90px;
      height: 50px;
      margin-right: 10px;
      background-color: red;
    }
  </style>
</head>
<body>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</body>
</html>

我们会发现这段代码在不同设备上的布局会变得截然不同
设备iPhone6/7/8上
请添加图片描述
设备iPhone6/7/8 Plus下
请添加图片描述
可以发现两个页面布局完全不同
造成这个问题的原因就是各个设备屏幕宽度的不同,有些屏幕大有些屏幕小,那么我们怎么来使布局在不同的设备上都能正常显示呢?

关键就在于我们书写css样式的时候,我们使用的单位是px

px是相对逻辑单位,我们写多少px就是定死的值,是无法随设备宽度改变而改变的,而我们现在要实现同一元素在不同设备布局的占比要一致,那么我们使用的单位就需要一致

因此我们想到使用rem,rem是相对于html的font-size来计算的,我们使用js页面布局之前,对当前设备的宽度进行获取然后除以10,相当于将页面十等分然后十分之一设置rem,这样在不同的设备上rem代表的都是页面宽度的十分之一,自然就能实现不同设备上的适配

function setRemUnit () {
    var rem = docEl.clientWidth / 10
    docEl.style.fontSize = rem + 'px'
}
setRemUnit();

上面的代码中,将html节点的font-size设置页面clientWidth(布局视口)的1/10,即1rem就等于页面布局视口的1/10,这就意味着我们后面使用的rem都是按照页面比例来计算的。

使用rem布局虽然可以解决适配问题,但是因为我们需要手工完成px单位到rem单位的转换,所以就会变得复杂很多

优点

相对于px固定布局和百分比布局,可以很好地解决不同设备下的尺寸间隙字体的相对大小问题

缺点

1.计算繁琐
2.需要js辅助

vh、vw方案

vh、vw方案即将视觉视口宽度window.innerWidth视觉视口高度window.innerHeight等分为 100 份。

缺点

原文地址:https://blog.csdn.net/m0_61607810/article/details/121808668

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14713.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注