rem和vw响应式布局

516 阅读1分钟

px, px是固定单位
rem是相对于html的font-size
em是相对当前元素的font-size ,如果当前元素没有往上找,知道找到body的font-size 左后至默认的font-size
vh/vw vw 就是根据窗口的宽度,分成100等份,100vw就表示满宽,50vw就表示一半宽。(vw 始终是针对窗口的宽),同理,vh则为窗口的高度
calc()

  1. 使用“+”、“-”、“*” 和 “/”四则运算;
  2. 可以使用百分比、px、em、rem等单位;
  3. 可以混合使用各种单位进行计算;
  4. 表达式中有“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;
  5. 表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。

rem移动端适配

window.onload = function () {  //进入页面后立即触发一次
   var width = window.innerWidth 
  document.documentElement.style.fontSize=(width/750)*100 + 'px'   //对于不同的设计稿可以除以不同的等分

  window.addEventListener('resize',()=> {  //监听手机屏幕变化,有变化后在走一次
  var width = window.innerWidth  //获取屏幕的宽度,然后根据不同的屏幕宽度设置不同的font.size
  console.log(document.documentElement, 88); //document.documentElement获取dom结构
  //把设计稿分成750等分,他就变成了7.5这样太小了,最小是12,所以要*100放大100倍
  document.documentElement.style.fontSize=(width/750)*100 + 'px'  //在html标签上添加行内样式字体大小
  })
}

引入使用

<!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>
  <script src="./rem.js"></script>
  <style>
    div {
      width: 1rem;
      height: 1rem;
      background-color: coral;
    }
  </style>
</head>

<body>
  <div></div>
</body>

</html>