rem

4/19/2023 css响应式布局

# rem

# rem 介绍
  • rem 相对于根元素设置的字体尺寸 font-size(默认 16px)
(默认情况)1rem=16px  得出需要转换值/16 就可以得出rem
# postCss 介绍
  • 为了避免复杂的计算方式,可借用工具 postCss

  • postCss 是一个用 javascript 工具和插件转换的 css 工具

  • postcss-pxtorem /postcss-px2rem 转换工具


npm i postcss-pxtorem --save
postcss.config.js文件配置
module.exports = {
  plugins: {
    'postcss-pxtorem': {
       //根元素字体大小
       rootValue: 16,
       //匹配CSS中的属性,* 代表启用所有属性
       propList: ['*'],
       //转换成rem后保留的小数点位数
       unitPrecision: 5,
       //小于12px的样式不被替换成rem
       minPixelValue: 12,
       //忽略一些文件,不进行转换,比如我想忽略 依赖的UI框架
       exclude: ['node_modules']
     }
  }
}

  • 为了不同设备宽度下对应不同的基准值
const baseSize = 14 ;
function setRem(){
 const scale = document.documentElement.clientWidth / 1920;  获取当前屏幕的框 除以设计稿1920.缩放比
 document.documentElement.style.fonSize = baseSize * Math.min(scale,2) +'px'
 }
 setRem() // 执行
 window.onresize=function (){
     setRem()
 }

  // 在main函数中引用
补充:Math.min(1,2,3) 函数返回作为输入参数的数字中最小的一个 1
onresize()  //浏览器发生改变时会执行该函数

补充方法二

useDebounceFn

import {useDebouncdef} from '@vueuse/core'
//rem 等比适配配置文件
const baseSize = 16
//执行函数
function setRem(){
    let scale = 1 基准值
    if(document.documentElement.clientWidth<1325){ //  //1325的话就是1:1 根元素16px
    scale = document.documentElement.clientWidth / 1325
         if(document.documentElement.clientWidth <1097){
             scale=1097 / 1325                            // 最小1097		}
    }
}

setRem()
    // 改变窗口大小时重新设置rem
    window.onresize = useDeboounceFn(()=>{
        setRem()
    },150)

补充方法三,表格自适应

export const computedTextWidth = (text:string)=》{
const span= document.createElement('div)
span.innerHTML = `&lt;span id = "compute-text-wrapper">${text}&lt;/span>`
const app2 = document.querySelector('body') as  HTMLBodyElement
app2.appendChild(span)
const width = (document.querySelectore('#compute-text-wrapper) as HTMLElement).offsetWidth
document.getElementsByTagName('body')[0].removeChilod(span)
return width + 55
}

    思念是一种病
    蔡健雅/张震岳