当前位置: 首页 > news >正文

界面自适应new 使用postcss-pxtorem

一、在index.html头部加入手机端自适应meta

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

二、vue项目中使用postcss-pxtorem

  1. 安装插件
npm install postcss postcss-pxtorem --save-dev
  1. 插件的基本配置
    根目录下创建postcss.config.js文件
export default {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 1, // 表示根元素字体大小或根据input参数返回根元素字体大小
      unitPrecision: 5, // 单位转换后的精度
      /**
       *  使用通配符 * 以启用所有属性。例如:['*']
          在单词的开头或结尾使用 *。(['*position*'] 将匹配 background-position-y)
          使用 ! 来排除某个属性。例如:['*', '!letter-spacing']
          可以将 "not" 前缀与其他前缀结合使用。例如:['*', '!font*']
       */
      propList: ['*'], // 需要做转化处理的css属性  * 就是所有属性都要转换,如`hight`、`width`、`margin`等,`*`表示全部
      // 若想设置部分样式不转化 可以在配置项中写出
      // eg: 除 border和font-size外 所有px均转化为rem
      // propList: ["*", "!border","!font-size"],
      // exclude: /node_modules/i, // 这里表示不处理node_modules文件下的css
      selectorBlackList: ['ignore-'], // 过滤掉ignore-开头的class,不进行rem转换
      // mediaQuery: false, // 是否在媒体查询中也转换 px
      minPixelValue: 2, // 最小px为2,如果设置1px则不转rem
      replace: true, // 是否更换属性值,而不是添加一个rem的新属性
    }
  }
}
  1. 自定义配置rem基数
    app.vue
<script setup>
import { RouterView } from 'vue-router'
import { onMounted, onBeforeUnmount } from 'vue'

/**
 * resize 重新计算方法
 */
const resize = () => {
  const deviceWidth = document.documentElement.clientWidth
  document.documentElement.style.fontSize = deviceWidth / 375 + 'px'
}

onMounted(() => {
  resize()
  window.addEventListener('resize', resize)
})

// 销毁钩子函数
onBeforeUnmount(() => {
  window.removeEventListener('resize', resize)
})

</script>

<template>
  <RouterView />
</template>

<style scoped>
header {
  line-height: 1.5;
  max-height: 100vh;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

nav {
  width: 100%;
  font-size: 12px;
  text-align: center;
  margin-top: 2rem;
}

nav a.router-link-exact-active {
  color: var(--color-text);
}

nav a.router-link-exact-active:hover {
  background-color: transparent;
}

nav a {
  display: inline-block;
  padding: 0 1rem;
  border-left: 1px solid var(--color-border);
}

nav a:first-of-type {
  border: 0;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }

  nav {
    text-align: left;
    margin-left: -1rem;
    font-size: 1rem;

    padding: 1rem 0;
    margin-top: 1rem;
  }
}
</style>

  1. 无法将内联样式和js中css的px转成rem
http://www.dtcms.com/a/104947.html

相关文章:

  • FreeRTOS 知识点总结(二):同步机制与应用场景
  • 如何在JMeter中配置断言,将非200状态码视为测试成功
  • java 洛谷题单【数据结构1-4】图的基本应用
  • 15:00开始面试,15:08就出来了,问的问题有点变态。。。
  • 射频功率放大器保护电路简略
  • 消息中间件对比与选型指南:Kafka、ActiveMQ、RabbitMQ与RocketMQ
  • Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>
  • 25.4.1学习总结【Java】
  • 嵌入式EMC设计面试题及参考答案
  • 汇编学习之《移位指令》
  • Citus源码(2)分布式读流程分析与基础概念梳理(shardid、placementid、groupid)
  • 【QT】QT的多界面跳转以及界面之间传递参数
  • 【超详细】一文解决更新小米澎湃2.0后LSPose失效问题
  • 使用 Less 实现 PC 和移动端样式适配
  • Java基础-27-多态-多态好处和存在的问题
  • win server2022 限制共享文件夹d
  • PWA 进阶教程(二): 如何在 PWA 中实现推送通知
  • Linux系统调用编程
  • LeetCode102.二叉树的层序遍历
  • 【操作系统】Linux进程管理和调试
  • QML Book 学习基础6(定位/布局元素)
  • 【浏览器的渲染原理】
  • uniapp微信小程序开发工具本地获取指定页面二维码
  • 【AI工具】DeepSeek直接生成图片,效果不错
  • 前后端数据序列化:从数组到字符串的旅程(附优化指南)
  • 爬虫:请求头,requests库基本使用
  • 《C++Linux编程进阶:从0实现muduo 》-第8讲.C++面试如何高效获取线程ID
  • nginx如何重启
  • 物联网时代,HMI 设计的创新机遇与挑战
  • 人工智能的三个主义(行为主义、连结主义、符号主义)的整体性关系(并非割裂)